История изменений
Исправление aist1, (текущая версия) :
С чего это? Он данные CTE на каждый запрос заново с нуля строит.
Ну не совсем. Там, конечно, есть немалый оверхед в плане того, сколько работы выполняется по ходу эвалюации подзапросов, если подразумевать интерпретацию. Но умная реализация это все может убрать при оптимизациях. Аналитические дата-платформы так и делают. А операционным оно не надо, там pointer chasing гонять никому в голову не придет.
Для таких операций действительно только на основании mmap что-то делать
Mmap не годится для мутабельных данных, хотя раньше на нем БД делали. На MMap сложно добиться отказоустойчивости, и очень сложно контроллировать сброс страниц на диск. Т.е. технически оно всё осуществимо, но лучше не надо. У меня в Мемории, правда, SWMRStore в одной из вариаций работает над MMap, но там перезаписи блоков нет. Там лог-структурированный циркулярный буфер. Тут можно добиться отказоустойчивости, но со всем остальным жепа останется.
Массив будет одним значением.
Всё еще хуже. Если говорить про Erlang, то массивы там иммутабельные. Т.е. если хочется каноничности, то придется делать CoW-массивы, и Mnesia превратится в Memoria, гы.
В Мемории проблем, которые ты описываешь, действительно, нет. Все типы динамические, все можно эффективно обновлять, как точечно, так и пакетно. Есть и jsonb-подобные структуры на основе ссылочной модели, но у них размер ограничен и оптимизирован на небольшие документы, которые в блок влезают (4K-1M), тогда будет zero-copy.
Mnesia, кстати, в какой-то мере модель для Memoria. Но не конкретно как БД, а в контексте всей эрланговской платформы. Я тоже затачиваюсь по CSP-модель в качестве операционной надстройки. И считаю, что ЯП с платформой должен иметь хорошую гибкую встраиваемую БД, над которой эту платформу и строить.
Исходная версия aist1, :
С чего это? Он данные CTE на каждый запрос заново с нуля строит.
Ну не совсем. Там, конечно, есть немалый оверхед в плане того, сколько работы выполняется по ходу эвалюации подзапросов, если подразумевать интерпретацию. Но умная реализация это все может убрать при оптимизациях. Аналитические дата-платформы так и делают. А операционным оно не надо, там pointer chasing гонять никому в голову не придет.
Для таких операций действительно только на основании mmap что-то делать
Mmap не годится для мутабельных данных, хотя раньше на нем БД делали. На MMap сложно добиться отказоустойчивости, и очень сложно контроллировать сброс страниц на диск. Т.е. технически оно всё осуществимо, но лучше не надо. У меня в Мемории, правда, SWMRStore в одной из вариаций работает над MMap, но там перезаписи блоков нет. Там лог-структурированный циркулярный буфер. Тут можно добиться отказоустойчивости, но со всем остальным жепа останется.
Массив будет одним значением.
Всё еще хуже. Если говорить про Erlang, то массивы там иммутабельные. Т.е. если хочется каноничности, то придется делать CoW-массивы, и Mnesia превратится в Memoria, гы.
В Мемории проблем, которые ты описываешь, действительно, нет. Все типы динамические, все можно эффективно обновлять, как точечно, так и пакетно. Есть и jsonb-подобные структуры на основе ссылочной модели, но у них размер ограничен и оптимизирован на небольшие документы, которые в блок влезают (4K-1M), тогда будет zero-copy.