2014-02-03 5 views
1

Я хочу сохранить данные в документах CouchDB и, как я привык делать это в СУБД. Я хочу создать поле, которое может содержать только уникальное значение в базе данных. Если я сейчас сохраню документ и уже есть документ с уникальным ключом, я ожидаю ошибку от CouchDB.Couchdb - как установить поле, содержащее уникальный ключ

Я предполагаю, что могу использовать идентификатор документа и заменить автоматически созданный идентификатор документа на мое значение, но есть способ установить другое поле в качестве уникального держателя ключа. Любая лучшая практика в отношении уникальных ключей?

ответ

2

Как вы сказали, сгенерированный _id принудительно применяется как уникальный. Это единственное реальное единственное ограничение в CouchDB, и некоторые люди используют его как таковое для своих приложений.

Однако это относится только к одному экземпляру CouchDB. После того, как вы начнете вводить репликацию и другие экземпляры, вы можете столкнуться с конфликтами, если тот же _id создан на более чем 1 узле. (в зависимости от того, как вы создаете свои _id, это может быть или не быть проблемой)

1

Как сказал Доминик, _id является единственным параметром, который почти гарантирован быть уникальным. Одно несомненно, что вам нужно создать свою «базу данных» по-другому. Имейте в виду, что в _id будет база данных. У вас будет только один документ с этим _id.

_id должен быть строкой, что означает, что вы не можете иметь массив или число или что-то еще.

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

я придумал идентификаторами, которые выглядели так:

"email:[email protected]" 

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

Смежные вопросы