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.

(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, остальное живет в виде библиотек.