Просто прочитайте эти строки
Если ваши данные носят объектный характер, используйте хранилища объектов («NoSQL»). Они будут намного быстрее, чем реляционная база данных.
Если ваши данные носят реляционный характер, затраты на реляционную базу данных того стоят.
из-
http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern
Итак, как мне узнать, являются ли мои данные реляционными по природе или объектно-ориентированными?
Ответы:
На риск быть застреленным, я попробую простое английское определение.
«Реляционная природа» для меня переводится как: все элементы определенного типа имеют почти одинаковые атрибуты, что упрощает создание простой таблицы, но все элементы в этой таблице и затем SQL для выполнения CRUD и поиска. Кроме того, если ваши данные можно смоделировать так, чтобы все элементы имели один из ограниченного набора типов, вы можете определить структуру реляционных данных, которая соответствует этому набору типов.
«Природа объекта» переводится следующим образом: Предметы сходного типа могут иметь широкий спектр атрибутов, и эти атрибуты могут иметь самые разнообразные свойства и тип. Очень часто это можно (с достаточным усилием) перевести в реляционную модель, но многие таблицы будут заполнены очень редко, и в результате вы получите очень неэффективные соединения LEFT OUTER, что снижает производительность реляционной базы данных по сравнению с ней. в базу данных NOSQL.
Я должен сказать, что с моей точки зрения нет строгой линии, разделяющей эти два. Вероятно, вы можете найти любое количество примеров, которые попадают где-то между этими двумя крайностями.
Хорошо, теперь я открыл себя снайперам со всех сторон. Любые комментарии приветствуются. Посмотрим, сможем ли мы улучшить это определение вместе.
источник
Данные оба.
(Строго говоря, это не может быть объект в природе, потому что ему не хватает поведения, но мы не будем придирчивы).
Решение о хранении данных в базе данных RDBMS или NoSQL больше зависит от того, как вы собираетесь использовать данные , а не от реальной «природы» самих данных.
Если вы намереваетесь поддерживать все виды навигационных путей к данным, вы можете сохранить данные в СУБД, поскольку у вас будут разные способы доступа и представления данных. Вам нужна база данных, чтобы сделать много тяжелой работы для вас. Например, данные «Заказа» могут быть доступны через клиента, менеджера по продажам, sku (товар), дату, регион и т. Д.
С другой стороны, если у вас есть минимальные навигационные пути, вы можете просто сохранить весь объект. Например, «Корзина», доступ к которой осуществляется только через веб-интерфейс и которая долго не сохраняется или не анализируется, может лучше подходить для хранилища NoSQL. Жертва, которую вы приносите с (значение документа или ключа) хранилищами данных NoSQL, заключается в том, что вы обходитесь без связей между коллекциями - если вам не нужны эти связи (для навигационных путей, специальных запросов или отчетов), и позаботьтесь о них в своем приложение, тогда ты будешь в порядке.
Конечно, вы можете хранить данные в обоих по разным причинам, но у этого есть свои недостатки.
источник
Данные не являются «объектами в природе» или «реляционными по природе». Любые данные могут быть представлены как в реляционной, так и в объектной модели / графической структуре. Что подходит, зависит от того, как данные будут использоваться приложениями. Часто у вас может быть и то и другое. Например, данные, используемые на веб-сайте, могут храниться в реляционной базе данных, но по требованию загружаться в графическую структуру, которая затем кэшируется в хранилище значений ключей в памяти.
Утверждение, что объект хранит / NoSql будет быстрее, чем реляционные для некоторых видов данных, просто неверно. И снова важно то, как ваше приложение использует данные, а не форма самих данных. Хранилище объектов будет быстрее при загрузке графа объектов, хранящегося как единое целое, но будет намного медленнее при специальных запросах по многим объектам или при обновлении свойств многих объектов.
источник
Я думаю, что ключевая строка из статьи:
Мне кажется, что автор делает хорошее замечание, что если ваш код, например, получает количество клиентов в Испании для некоторой логики, вам не следует заполнять список клиентов всеми клиентами в Испании, а затем считать объекты заказчика. (к которому ORM может подтолкнуть вас)
Очевидно, по самой структуре данных клиента невозможно определить, будет ли она использоваться таким образом. поэтому я думаю, что мы должны интерпретировать «данные» как «всю информацию, используемую вашим приложением». Если это включает в себя такие вещи, как агрегаты или «Все X, связанные с Y», тогда ваши «данные» не подходят для атомарного подхода NoSql
источник