metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-10-26 03:17 pm
Entry tags:

СУБД с функциональщиной унутре

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

С обычным хаскелем это не совсем согласуется, т.к. типы значений могут менятся по ходу выполнения ("связали с именем другое значение"). Ну и вообще реализация такой вещи требует каких-то оккультных знаний по внутренностям хаскеля.

[identity profile] kkirsanov.livejournal.com 2010-10-26 04:01 pm (UTC)(link)
-- что с ним одновременно могут работать по сети множество пользователей.
Я такую штуку к питону прикрутил.

Таким образом я на целом выводке робатовЪ софт пишу. из того чего я там наменяю в итоге кодогенерируется программа которая стартанет при следующем запуске.

[identity profile] lionet.livejournal.com 2010-10-26 04:02 pm (UTC)(link)
Ты придумал Erlang/Mnesia.

[identity profile] metaclass.livejournal.com 2010-10-26 04:13 pm (UTC)(link)
dmzlj как-то о ней плохо отзывался. Но вообще да, "ничто не ново под луной".

[identity profile] lionet.livejournal.com 2010-10-26 04:21 pm (UTC)(link)
Я тоже плохо отзывался. Но ровно то же самое ты и предлагаешь ;)

[identity profile] dmitry zuikov (from livejournal.com) 2010-10-28 04:12 am (UTC)(link)
Ну мнезия же не тем плоха, что у нее эрланг внутри. Собственно, у того же постгреса внутри абсолютно всё, никто не мешает написать для него бинд хаскелла и писать хранимки на нем.

[identity profile] lionet.livejournal.com 2010-10-28 05:35 am (UTC)(link)
Нет, эрланг плох тем, что у него мнезия внутри. Я думаю мы одинакового мнения о erlang и о mnesia: Erlang рулит, мнезия сосёт.

Кстати, ты что из lj выпилился? Да ещё в facebook?

[identity profile] dmitry zuikov (from livejournal.com) 2010-10-28 05:37 am (UTC)(link)
Ну я не в фейсбук, я его использую вместо OpenID. Выпилился по многим причинам, можно целый пресс-релиз накатать. В частности --- как крайнее средство самомотивации, ибо надо закрыть все дела и дотянуть до отпуска. Потом, может верну, но как сервис жж меня тоже стал очень сильно раздражать.

[identity profile] sorhed.livejournal.com 2010-10-26 04:15 pm (UTC)(link)
Или Gemstone/S.

(Anonymous) 2010-10-26 04:29 pm (UTC)(link)
Clojure позволяет иметь к одному процессу произвольное количество repl'ов
(см. slime, swank)

Объявленное в любом repl'е становится немедленно видно всем остальным

[identity profile] avnik.livejournal.com 2010-10-26 05:42 pm (UTC)(link)
Ты ZODB придумываешь, с питоном в качестве языка запросов. (точнее ты придумываешь аналог зодб на хацкеле)
ACL делаются через аннотации (если что). Но оно полностью "юзерспейс" -- то есть в сторадже хранится btree oid->object, остальное живет в виде библиотек.