Подтвердить что ты не робот

Что означает отсутствие схемы для базы данных NoSQL?

Schemaless - это термин, который в настоящее время плавает в мире NoSql.

  • Что это значит?
  • У меня есть документ с 3 свойствами сегодня, и я перехожу к его производству, а затем что происходит с моими данными, когда мне нужно добавить еще 2 свойства в мой документ?
  • Является ли это проблемой исключительно для миграции, когда мне нужно управлять миграцией данных или может ли база данных NoSql создавать такое трение, как RDBMS, или сделать это проще?
4b9b3361

Ответ 1

Schema-less является немного неправильным, лучше подумать об этом как:

  • SQL = Схема, выполняемая RDBMS при записи
  • NoSQL = частичная схема, применяемая СУБД на Write, схема PLUS, полностью внедренная в приложение для чтения (внешняя схема)

Таким образом, хотя предполагаемый Schema-less NoSQL-хранилище данных теоретически позволит вам хранить любые данные, которые вам нравятся (как правило, пары ключевых значений в документе) без предварительного знания ключей или типов данных, будет бессмысленным если у вас нет механизма для извлечения и использования данных. Поэтому, по существу, схема частично перемещается из РСУБД в код приложения. Я говорю частично, поскольку вы добавили индексы для документирования коллекций и/или секционировали данные для производительности, поэтому СУБД NoSQL будет иметь частичную схему, определенную локально, и, возможно, принудительно с помощью ограничений Unique.

Что касается добавления дополнительных атрибутов к документу/объекту в хранилище. В зависимости от того, сколько отступов вокруг документа (неиспользуемое пространство), в нем блок физических данных, добавление нескольких пар значений в документы может привести к физическому перемещению документа в большем непрерывном блоке хранения, и связанные индексы перестроены. Если вы планируете использовать новые ключи в часто используемом запросе, вы также захотите добавить подходящий новый индекс, который, очевидно, потребует некоторого физического хранилища, потребуется некоторое время для первоначальной сборки и, возможно, приведет вас к тому, чтобы спросить системного администратора выделять больше памяти в СУБД, чтобы можно было кэшировать новый индекс (ы).

Ответ 2

Немного поздно в течение дня, но при поиске по теме снова я нашел эту статью

http://tech.pro/tutorial/1189/basics-of-ravendb-nosql

Обратитесь к разделу 3 статьи, я приведу его снова для облегчения.

Добавление и изменение моделей данных в RavenDB не могло быть проще. поскольку это база данных NoSQL, она может обрабатывать дополнения и удаления модели очень просто. Если свойство добавлено в ваш класс, оно будет установите значение по умолчанию этого типа. Если свойство удалено, то при десериализации это значение будет проигнорировано. Больше не нужно SQL-скрипты.

Это кажется логичным ответом для RavenDB.