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] vromanov.livejournal.com 2010-08-29 07:16 pm (UTC)(link)
Ты открыл NoSQL!

[identity profile] metaclass.livejournal.com 2010-08-29 07:19 pm (UTC)(link)
Это не NoSQL, т.к. мне религия запрещает использовать базы данных без запросов и статической схемы :)
Другое дело, что и то и другое придется реализовать самому, причем, если делать по человечески, это потянет за собой такое вуду, которое будет сложнее чем саппорт баз на оракле:)

[identity profile] vromanov.livejournal.com 2010-08-29 07:27 pm (UTC)(link)
Такое вуду уже есть. К последнему BerkeleyDB прикрутили SQL от SQLite3.

[identity profile] metaclass.livejournal.com 2010-08-29 07:44 pm (UTC)(link)
SQLite малость печален, странной типизацией и неполноценным SQL.

[identity profile] nivanych.livejournal.com 2010-08-30 04:25 am (UTC)(link)
Ну так sqlite и предназначен-то для чего?
Типизация странная, но в остальном у меня к нему претензий нет.

А то, что прикрутили SQL, это очень хорошо.
Полноценный SQL тем, кто использует для своей задачи BerkeleyDB, не нужен, а вот некоторые элементы SQL очень даже нужны.
Посмотрю, может быть, мне пригодится.

[identity profile] http://users.livejournal.com/_slw/ 2010-08-30 10:56 am (UTC)(link)
i18n у него (sqlite) в жопе чуть более чем полностью.

[identity profile] nivanych.livejournal.com 2010-08-30 05:56 pm (UTC)(link)
Да, совсем забыл...
Ну, ничо. Не всегда это так жопно.

[personal profile] alll 2010-08-29 08:35 pm (UTC)(link)
Так. MySQL ещё толком не помер, а уже заработал переселение душ.

[identity profile] metaclass.livejournal.com 2010-08-29 08:39 pm (UTC)(link)
Кровосмешение и содомский грех это а не переселение душ :)

[personal profile] alll 2010-08-29 08:49 pm (UTC)(link)
сон смерти не помеха

[identity profile] vromanov.livejournal.com 2010-08-29 08:39 pm (UTC)(link)
Это совсем другое. Теперь у оракла стало 4 нормальных базы

[identity profile] b00ter.livejournal.com 2010-08-29 08:03 pm (UTC)(link)
Это именно NoSQL. Статическая схема зло, особенно если ее рассматривать в динамике (версионность, ага), а map-reduce ничуть не хуже языка запросов, особенно в вэбне, где каждое второе чмо норовит injection подкинуть.

Да-да, плюйте в меня, православные скуэльшики!

[identity profile] teewoon.livejournal.com 2010-08-29 08:06 pm (UTC)(link)
*сиквельщики

[identity profile] metaclass.livejournal.com 2010-08-29 08:22 pm (UTC)(link)
Насчет статики это вообще религиозный вопрос.

Я не могу заставить себя писать тестов больше чем кода, а тут нет альтернативы - или статическая типизация и гарантия корректности программы или 100% покрытие тестами.

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