Некоторое время назад я разобрался с Amazon Simple DB и подозреваю, что BerkleyDB делает то же самое.
И ключ, и значение являются BLOBS. По сути, там можно хранить что угодно. Давайте возьмем пример, основанный на некоторых ваших перечисленных пунктах/вопросах.
Пункты, которые я затрону, следующие:
- Как он сопоставляет электронные письма с пользователями?
- Как пользователи связаны с другими пользователями?
Как и в реляционных базах данных, значение ключа должно быть уникальным, поэтому давайте предположим, что идентификатор пользователя/имя пользователя уникальны. Таким образом, мы можем иметь ключевое значение, такое как admin, jdoe, serviceadmin и т. д., в качестве ключей. Поскольку мы можем хранить что угодно в поле значения, мы можем сохранить, например, XML-документ в поле значения.
Пример может выглядеть так:
Key:
admin
Value:
<user>
<emaillist>
<email>[email protected]</email>
</emaillist>
<relatedusers>
<relateduser>
<name>jdoe</name>
<relationship>someidentifier</relationship>
</relateduser>
<relateduser>
<name>serviceadmin</name>
<relationship>someidentifier</relationship>
</relateduser>
</relatedusers>
</user>
Поскольку XML можно использовать для описания данных различными способами, это, вероятно, очень простой пример того, чего можно достичь. Однако вы можете хранить там некоторый двоичный формат данных, который очень похож на XML, который вы можете каким-то образом извлекать и интерпретировать. Как и бит 1, это активное состояние пользователя и т. д.
Сила NoSQL в том, что он может хранить что угодно, и структура от строки к строке тоже может быть разной. Это тоже обратная сторона. Поскольку невозможно интерпретировать данные без надлежащей документации, такие базы данных трудно понять с точки зрения структуры. Они могут содержать буквально все что угодно.
Надеюсь, теперь это имеет какой-то смысл.
person
Namphibian
schedule
19.12.2012