metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-08-29 06:58 pm

SQL DBMS vs самодельные базы из Berkeley DB, жаб, червей и змей

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

Так вот, нафиг тут тогда SQL/реляционные СУБД? Если взять что-нибудь вроде Berkeley DB, сделать для нее все те же самые функции, за исключением того, что конечный пользователь будет волен по желанию выкинуть нахрен, например, стандартное управление версионностью и запилить свое, или там не хочет он SQL в качестве языка запросов, а хочет какой-нибудь LINQ или тому подобные монады.
Т.е. практически, мы возвращаемся к давно выкинутой в пользу RDBMS идее самодельных наколенных баз данных, но на сей раз, в силу всеобщей засранности индустрии придурочными технологиями никто слова поперек не скажет, что называется, абы работало. Ну и опять же - сейчас выбор готового шрота, из которого можно клепать такую чушь сильно больше, чем это было 10-15 лет назад.

Работаете? Ну-ну

[identity profile] plumqqz.livejournal.com 2010-08-30 06:59 am (UTC)(link)
Спортивного интереса для советую посмотреть на BerkeleyDB посерьезней. Так вот, при более серьезном рассмотрении Вы выясните, что bdb представляет из себя недоделанный фундамент нормальной субд (который, безусловно, во многих случаях может быть полезен), и надо постоянно отслеживать всякие интимные базоданновые радости, которые обычные СУБД скрывают (например, при старте приложения надо обязательно начать процедуру восстановления базы, если, конечно, кто-то ее уже не восстанавливает). Надо быть постоянно готовым к отказу БД (а так как это C, то нарваться можно совершенно неожиданно) и т.п. Примерно представляя себе среднего жабиста-похаписта я ОЧЕНЬ сомневаюсь, что они смогут допилить свое приложение до требуемого тем же bdb уровня. Не потому что такие тупые, а потому что не в курсе.

Не надо забывать, что и о оптимизации запросов жабист - средний похапист имеет обычно самые дикие представления. Так как писать все писать ручками с bdb надоедает удивительно быстро, я легко могу себе представить тот ужас, который будет создан. Так что увы - оптимизатор БД обычно много умнее среднего и тем более слабого разработчика, и сильнее расслабленного хорошего.

Мне, признаться, эта затея кажется в высшей степени бесперспективной, хотя веселья будет предостаточно. Как говорил К.Прутков "Некоторые вещи нам непонятны не потому, что наши понятия об этих вещах слабы, но потому, что вещи сии не входят в круг наших понятий".

Re: Работаете? Ну-ну

[identity profile] guamoka.livejournal.com 2010-08-30 08:51 am (UTC)(link)
Не потому что такие тупые, а потому что не в курсе.

Ну да. Жабистам, которые не в курсе, например, так же не придет в голову выполнять оптимизацию кода вручную за Java-компилятор и JVM:-) Просто достаточно выполнять довольно четкие правила с предсказуемым результатом, и иметь общее представление о том, как работает компилятор/JVM. Хотя, казалось бы, вот вам в руки JNI, и вперед...

Re: Работаете? Ну-ну

[identity profile] plumqqz.livejournal.com 2010-08-30 08:54 am (UTC)(link)
Ну да. Жабистам, которые не в курсе, например, так же не придет в голову выполнять оптимизацию кода вручную за Java-компилятор и JVM:-)

Нежабистам вообще неизмеримо лучше: их такие задачи не волнуют.
Впрочем, по основному вопросу, как я вижу, возражений нет. Консенсус достигнут, это радует.

Re: Работаете? Ну-ну

[identity profile] guamoka.livejournal.com 2010-08-30 09:01 am (UTC)(link)
Мир в себе всегда радует!

Re: Работаете? Ну-ну

[identity profile] plumqqz.livejournal.com 2010-08-30 09:05 am (UTC)(link)
Да-да, "ЛСД - раскрасьте мир сами!"