Преимущество хранения данных без схемы по сравнению с хранением данных со схемой - PullRequest
7 голосов
/ 24 января 2012

Я хочу выбрать внутренний веб-сервис для моего приложения. При чтении документации этих сервисов (Parse, Proxomo, Cocoafish, StackMob и т. Д.) Выясняется, что некоторые из них предлагают хранить данные в бессхемовой форме, в то время как другие упоминают, что схема должна быть указана априори. Я понимаю, что такое схема данных, и надеюсь, что без схемы будет легко пользоваться, но я хочу знать достоинства и недостатки каждого из них. Любое объяснение будет с благодарностью.

Ответы [ 2 ]

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

Самая большая разница в масштабируемости.

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

Проблема со схемой возникает, когда вам нужны транзакции и согласованность различных наборов данных или таблиц.Все это должно быть сделано в коде.

Итак, суть в следующем: если вам нужны огромные объемные данные с дешевым быстрым доступом, то это должно быть без схемы.Если, с другой стороны, ваш размер данных и нагрузка скромнее, чем системы, основанные на схемах, лучше.

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

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

Я не настоящий специалист по этому вопросу, но из того, что я прочитал, вот что я воспринимаю:

  • в большинстве случаев базы данных без схем позволяют легко хранить ключи / значенияОбъекты JSON.Поэтому зачастую довольно просто соединить объекты, которыми вы управляете в своем приложении, с хранилищем БД.Вам не нужно использовать ORM (Object Relational Mapper), потому что ваши объекты находятся непосредственно в формате, принятом БД (в большинстве случаев довольно просто сгенерировать JSON из объекта, который есть в приложении)

  • Если у вас нет никакой схемы, вы можете легко настроить (добавить / удалить) свойства объектов, которые вы хотите сохранить в вашей БД, без необходимости обновления схемы иМиграция данных из старой схемы в новую.

  • в CON для без схемы, я чувствую, что вы не можете выразить столько ограничений, сколько вы могли бы сделать в стандартном SQL дляизвлекать данные (вы не делаете никаких соединений и т. д.), поэтому, возможно, вам нужно действительно проверить, как вы хотите извлечь данные из данных базы данных, и посмотреть, что предлагает движок без схемы.

...