Схема против бессхемной СУБД

Я использую базу данных Couchbase Lite для проекта, который, как я знаю, без схемы, и я очень доволен этим, потому что он решает мои проблемы, но он поднимает мне один вопрос, связанный с ограничениями первичного ключа в NoSQL (База данных документов).

Как все мы знаем, что все базы данных схемы будут представлены в таблицах, и эти таблицы могут иметь или не иметь первичный / забытый ключ. Например, предположим, у меня есть таблица с именем Student, в которой первичный ключ имеет вид usn(номер места в университете), а также другие атрибуты, имя, фамилия, адрес, номер контакта и т. Д. И т. Д.

usn | имя | фамилия | адрес | Контактный номер

2BA11CS409 | abc | MNQ | Бангалор | 1234567890

2BA11CS410 | XYZ | PQR | Мумбаи | 1234567809

Здесь из-за ошибки сообщается, что нарушение ограничений первичного ключа (невозможно добавить дубликат ключа), если я попытался добавить значение 2BS11CS409 еще раз.

Но как обстоят дела с Базой данных документов, как она будет определять уникальную ценность в документе,

docID:123456789zxcv

{
usn : 2BA11CS409,
firstname : abc,
.......
....... etc
}

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

docID:zxcv123456789
{
usn : 2BA11CS409,
firstname : abc,
last
....... etc
}

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

Мне нужно знать концепцию первичного / уникального ключа в базе данных документов, которая существует в реляционной базе данных. ИЛИ вы можете перенаправить меня на некоторые статьи

Благодарю вас.

1 ответ

Что ж, ограничения уникального ключа схемы или отсутствие схемы всегда используют индекс, преимущество для большинства RDB заключается в том, что они предоставляют эту услугу для вас, в случае с couchbase вам нужно сделать это самостоятельно. В основном у вас есть вторая коллекция, которая представляет индекс. Каждый раз, когда вы хотите вставить в свою стандартную коллекцию, вы просто сначала проверяете индекс, является ли документ с usn Вы хотите вставить существует, если нет, вы вставляете документ в обычную коллекцию. Затем вы вставляете документ в индекс с docId=usn и если вы хотите, вы можете вставить ссылку на docID документа, который вы вставили в обычную коллекцию.

Другие вопросы по тегам