Каково максимальное значение для составного ключа CouchDB?

статические методы не используют переменных экземпляра класса, в котором они определяются. Очень хорошее объяснение различия может быть найдено на эта страница

6
задан James A. Rosen 26 July 2009 в 12:41
поделиться

4 ответа

CouchDB в основном написан на Erlang. Я не думаю, что будет верхний предел для размеров кортежа составного / составного ключа строки, отличного от системных ресурсов (например, ключ настолько долго, что он использует всю доступную память). Пределы масштабируемости CouchDB неизвестны согласно сайту CouchDB. Я предполагаю, что вы можете продолжать добавлять поля в огромный составной первичный ключ, и единственное, что вас остановит, - это системные ресурсы или жесткие ограничения, такие как максимальные целочисленные размеры в целевой архитектуре.

Поскольку CouchDB хранит все, используя JSON, он вероятно, ограничивается наибольшими числовыми значениями по стандарту ECMAScript. Все числа в JavaScript хранятся как двойные числа IEEE 754 с плавающей запятой. Я считаю, что 64-битное двойное число может представлять значения от -5e-324 до +1,7976931348623157e + 308.

0
ответ дан 17 December 2019 в 18:18
поделиться

Похоже, было бы неплохо иметь функцию, в которой endKey мог бы быть включающей, а не исключительной.

0
ответ дан 17 December 2019 в 18:18
поделиться

Это должно помочь:

?startkey=["some_customer_id"]&endkey=["some_customer_id", "\uFFFF"]

Это должно включать все, что начинается с символа меньше \ uFFFF (все символы Unicode)

0
ответ дан 17 December 2019 в 18:18
поделиться

У меня две мысли.

Используйте метки времени

Вместо использования простых 0 и 1 для их поведения сортировки используйте метку времени создания записи (при условии, что они часть записей) а-ля [doc._id, doc.created_at] . Затем вы можете запросить свое представление с помощью стартового ключа некоторой достаточно ранней даты (эпоха, вероятно, подойдет) и конечного ключа «сейчас», например date +% s . Этот ключевой диапазон всегда должен включать все, и у него есть дополнительное преимущество сортировки по дате, что, вероятно, и так вам нужно.

или просто не беспокойтесь об этом

Вы можете просто проиндексировать по customer_id и больше ничего. У этого было бы приятное преимущество, заключающееся в возможности выполнять запросы, используя только key = . Конечно, записи не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

и у него есть дополнительное преимущество сортировки по дате, что, вероятно, и так вам нужно.

или, просто не беспокойтесь об этом

Вы можете просто индексировать по customer_id и ничего более. У этого было бы приятное преимущество, заключающееся в возможности выполнять запросы, используя только key = . Конечно, записи не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

и у него есть дополнительное преимущество сортировки по дате, что, вероятно, и так вам нужно.

или, просто не беспокойтесь об этом

Вы можете просто индексировать по customer_id и ничего более. У этого было бы приятное преимущество, заключающееся в возможности выполнять запросы, используя только key = . Конечно, записи не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

что, вероятно, вы и так хотите.

или не беспокойтесь об этом

Вы можете просто проиндексировать по customer_id и ничего более. У этого было бы приятное преимущество, заключающееся в возможности выполнять запросы, используя только key = . Конечно, записи не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

что, вероятно, и так вам нужно.

или, просто не беспокойтесь об этом

Вы можете просто проиндексировать по customer_id и ничего более. У этого было бы приятное преимущество, заключающееся в возможности выполнять запросы, используя только key = . Конечно, записи не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

Не беспокойтесь об этом

Вы можете просто проиндексировать по customer_id и больше ничего. У этого было бы приятное преимущество, заключающееся в возможности выполнять запросы, используя только key = . Конечно, записи не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

Не беспокойтесь об этом

Вы можете просто проиндексировать по customer_id и больше ничего. У этого было бы приятное преимущество, заключающееся в возможности выполнять запросы, используя только key = . Конечно, записи не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

не будут сопоставляться, когда они вернутся, но является ли это проблемой для вашего приложения? Если вы не ожидаете возврата тонны записей, вероятно, будет тривиально просто вытащить запись о клиенте из списка, как только вы получите данные, полученные вашим приложением.

Например, в ruby:

customer_records = records.delete_if {| запись | record.type == "customer"}

В любом случае, временные метки, вероятно, являются более привлекательным ответом для вашего случая.

2
ответ дан 17 December 2019 в 18:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: