LINUX.ORG.RU

No Schema DB, не могу понять


0

1

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

Прошу высказать свое мнение тех людей, которым это принесло пользу. Или подкиньте материалов, которые разжевывают профит.

Например поле переименовали? Тут два варианта, или городить if на клиенте с замысловатой проверкой наличия полей или поля версии или провести миграцию старых значений. В первом случае костыль, во втором так же как и в базах с наличием схемы.

★★★★★

Там не будет новых полей совсем. Возьми любую задачу с развесистой EAV реализацией в РСУБД. Переделай на монго. Оцени профит.

zz ★★★★
()

Плюсую, тоже сомнения по поводу schemaless. ИМХО понравится только всяким сайто-визитко-строителям, которые не осилили миграцию в РСУБД.

dizza ★★★★★
()

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

По поводу EAV в RDBMS: в том же PostgreSQL есть, например, тип данных hstore, который хранит отображение key => value.

dmitry_vk ★★★
()
Ответ на: комментарий от dizza

Просто буду писать маппинг Scala объектов и думаю как сделать по умному нормальную обработку изменений сущностей. В Morphia нормально сделали, но еще продумаю

http://www.carfey.com/blog/evolving-document-structures-with-morphia-and-mongodb/

vertexua ★★★★★
() автор топика
Ответ на: комментарий от dizza

Плюсую, тоже сомнения по поводу schemaless. ИМХО понравится только всяким сайто-визитко-строителям, которые не осилили миграцию в РСУБД.

Не только. Допустим, у тебя приложение, которое выстраивает каталог совершенно разнородных объектов. Тут либо EAV, либо никак. Да вообще везде, где совершенно нельзя заранее придумать схему.

Однако EAV даёт вполне заметный оверхед, извращает код и усложняет запросы. Да и вообще это насилие над реляционной моделью.

Хотя да, в постгресе есть hstore, как было сказано выше. И arrays.

anonymous
()
Ответ на: комментарий от vertexua

Ну да, вроде неплохо. Вроде все кейсы обработали.

dizza ★★★★★
()
Ответ на: комментарий от anonymous

Хотя да, в постгресе есть hstore, как было сказано выше. И arrays.

И даже уже json - все как в модных БД!

dmitry_vk ★★★
()
Ответ на: комментарий от zz

Возьми любую задачу с развесистой EAV реализацией в РСУБД. Переделай на монго…

…И рви на жопе волосы, так как выбрать что-нибудь сложное из этой вермишели быстро не получиться.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.