Что лучше - автоматически сгенерированный идентификатор или присвоение идентификатора вручную в документах couchdb? - PullRequest
8 голосов
/ 07 января 2012

Должен ли я генерировать идентификатор документов в CouchDB или я должен зависеть от CouchDB для его генерации?Каковы преимущества или недостатки этих подходов?Есть ли какие-либо последствия для производительности любого из этих параметров?

Ответы [ 4 ]

6 голосов
/ 08 января 2012

Нет никакой разницы в том, что касается CouchDB. Фридрих прав, что последовательные идентификаторы немного быстрее. Если вы запросите /_uuids?count=10, вы заметите, что UUID являются последовательными (по умолчанию).

Однако даже со случайными идентификаторами, после того, как вы запустите сжатие, все они будут в внутреннем «правильном» порядке в файле .couch, и в этот момент разницы нет. Так что в долгосрочной перспективе я обычно не беспокоюсь об этом.

1 голос
/ 07 января 2012

С автоматически созданными идентификаторами практически невозможно работать, если у вас есть два или более отдельных экземпляров вашего приложения. Потому что синхронизация между разными экземплярами не мгновенная. Решением для этого может быть выделение одного сервера для генерации (или проверки доступности) идентификаторов, например, с использованием базы данных SQL и в качестве шлюза для создания документа.

С другой стороны, если у вас есть только один сервер и вам никогда не понадобится больше, есть одно преимущество, которое я нахожу интересным для сгенерированных пользователем uid: так как они должны быть уникальными, вы можете использовать их в URL. Например, возьмите заголовок сообщения в блоге как _id.

С точки зрения производительности, сгенерированные идентификаторы CouchDB довольно длинные, поэтому, если ваши собственные идентификаторы короче, вы сэкономите значительное дисковое пространство (при условии, что у вас есть много документов).

1 голос
/ 07 января 2012

Главное, чтобы вы использовали в основном последовательные идентификаторы. Как объясняет эта статья и этот бит книги couchdb , использование случайных идентификаторов приводит к гораздо менее эффективной структуре внутри, как в отношении скорости, так и с точки зрения пространства, используемого на диске.

0 голосов
/ 17 июня 2017

Оба ответа выше рассказывают о ПРОФИ последовательных идентификаторов.Здесь основная проблема возникла из-за последовательных идентификаторов.

Предсказуемость других идентификаторов в документах, использующих один идентификатор.

Из-за этого мы не можем использовать последовательные идентификаторыURL-адреса приложений в качестве идентификаторов из-за того, что другие идентификаторы предсказуемы с использованием одного идентификатора и использование в качестве URL-аутентификации также невозможно (как это делается службами обмена файлами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...