Sсhemaless для MYSQL, как?

После знакомства с mongoDB появилось желание избавиться в своем ORM от инсталятора создающего структуру БД.
Идея состоит в том, чтобы отлавливать когда драйвер ругается на то, что нет у нас таблицы, и создавать таблицу, если не хватает колонки — создавать колонку.
Проблема типизации решена — при чтении в любом случае у нас в поле NULL будет, раз еще не было записи, а при записи у нас есть тип данных (не тип переменной, а именно тип поля включая set и enum, ибо внутри модуля структура данных типизирована.

Итак вопрос — как вы считаете насколько это криво?
Второй вопрос — подводные камни есть?
Как показывает практика многие проходили через идею выводить страницы подменив вывод 404-ошибки.
Недостаток очевиден — нет индексации ибо для поисковика это 404, и загаженный лог ошибок.
Нет ли здесь подобных подводных камней?

ПЫСЫ: Задача рассматривается в контексте php поскольку если уж я ставлю к примеру Питон, то легко поставлю рядом noSQL какой-то с shemaless и не буду изобретать велосипед. Уточнение ибо может есть какие-то нюансы в реализации.

UPD: Интересует в первую очередь ваше мнение о подходе а не готовые решения. Т.е. ОК/плохо, или там «лучше сделай вот так-вот», готовые решения конечно интересны, но разбирать чужой большой движок чтобы понять как он устроен это не так просто… Спасибо :)
  • Вопрос задан
  • 3697 просмотров
Пригласить эксперта
Ответы на вопрос 6
@MikhailEdoshin
Schemaless. Shemaless — это, надо думать, присказка Горлума-извращенца.
Ответ написан
@egorinsk
Это будет быдлокод. В лучших традициях жителей теплой Индии. А добавление поля в большую таблицу вообще может занять часы, так что ваш скрипт бодро отвалится по таймауту. Но даже если бы оно делалось мгновенно, это был бы быдлокод.

Хотите schemaless? Просто делаете одну таблицу entities с 3 полями: id, type, blob (в blob сваливаете JSON версию объекта). Но вообще, schemaless — крайне дурацкая идея. БД предлагает дополнительный уровень проверки и организации данных, а ленящиеся изучить язык SQL кажем так, юные программисты, кричат, что им этот SQL не нужен.

Естественно, предложить нормальную альтернативу проверенным надежным решениями никто не может, а монго выглядит как примитивный Key Value storage с яваскриптом для игроделов (ибо эти товарищи даже SQL осилить не смогли). Все серьезные организации используют SQL.
Ответ написан
avalak
@avalak
Возможно вас заинтересует RedBeanPHP. Оно решает похожую задачу.
Ответ написан
@Hint
С JOIN проблем не будет? Определить где именно поля не хватает.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Это очень и очень криво. Лучше уж EAV применить и уже отсюда плясать.

А вообще нету никаких проблем использовать MongoDB в качестве дополнения к MySQL.
Ответ написан
@nikita2206
Это ок для девелопмента (я бы даже сказал, что это довольно удобно), но на продакшене такую фичу надо отключать (иначе EAV нужен).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы