Alexander
Блин а чего б его руками не писать?
Quet
Alexander
Я правда не смотрел его с появления
Dmitry
тупо мапами в памяти + простой иммутабельный сторейдж
Alexander
При появлении как идея клёвая, как реализация ну нафиг
Dmitry
гитоподобной структуры.
Dmitry
как сразу хорошо стало
Alexander
Ну нетривиальный запрос все равно хрен поможет написать
Quet
эээ.. а было плохо с постгресом?
Dmitry
+100500 к скорости разработки, -9000 от времени выполнения запросов
Quet
Alexander
Никиты Волкова прикольная либа для пг
Alexander
Но запросы руками
Dmitry
ну, да. если данные похожи на ряды - то всё. постгресс отсасывает сразу
Anatolii
Все равно надо писать тетсы на код который в базу ходит, лучше уже предсказунмый SQL писать
Alexander
Ага которое полагается на оптимизатор базы
Dmitry
особенно с массивами
Dmitry
но если хранить в виде нормальных таблиц, то тоже просасывает, потому что тупо много записей получается
Quet
Dmitry
я кстати на это напарывался, когда делали машинное обучение - были дюже большие вектора признаков, я их было сначала в постгрес засунул, но оказалось, что там никак. тогда на линзах сделал ин-мемори структуру и ничо так, сразу улучшилось
Dmitry
да на небольших объемах
Quet
так опалай это как раз "запросы руками", просто sql собирается тайпсейфно
Dmitry
ну вот наш текущий пример запроса
Dmitry
запросы по сути не sql-ные
Dmitry
а например, найти сначала все минимальные паросочетания (размещение людей по номерам в зависимости возрастов и емкостей номеров), а потом найти все подходящие периоды - т.е слайсы векторов без дыр
Quet
я вот как раз думал кто-то поюзал либу волкова вместо симпла
Anonymous
Dmitry
ну в той истории да, были модификации. в текущий истории четко один читает, второй пишет
Dmitry
хотя что-то я не вижу проблем даже с конкурентным доступом в рамках одного процесса
Quet
Anonymous
а какие требования по durability?
Anonymous
а то это конечно понятно, что в память можно что угодно засунуть и будет классно
Quet
прост если самописное и инмемори, то можно влететь на проблемы с gc если там гигов 50-100 данных будет
Dmitry
@quetzal в итоге у меня есть пока прототип, который мне нравится и я решил его доделать и на нем запуститься. в кач-ве сторейджа в прототипе самописное, думал подсунуть level db но не знаю, зачем оно мне если база иммутабельная
Alexander
Будет 50 гигов - положишь в off-heap память
Alexander
Ну или выделишь в отдельный процесс где гц не будет совсем
Dmitry
@async_prince требования что бы данные не терялись есть
Quet
Alexander
Зачем?
Dmitry
@qnikst там много контента - блобы, тексты. я их конечно же уже выгружаю и достаю только когда они нужны
Quet
как ещё офхип сделать
Dmitry
а в памяти только хэши
Alexander
Будто в Haskell средств нет
Dmitry
говорю ж на подобие гита структура
Alexander
Аллокации есть, работа с raw памятью есть, что еще надо?
Alexander
Даже заворачивается в безопасный апи
Dmitry
@quetzal cereal взял по совету, так как там есть миграция
Quet
ага, и доволен им (пока)?
Dmitry
я хз. то, что в постгресе могло делаться 10 секунд, тут делается 3 миллисекунды
Dmitry
я доволен
Alexander
safe-copy, который cereal берет?
Dmitry
причем 3 миллисекунды это с подъемом индекса в память
Quet
круто, хотел его посмотреть как раз
Dmitry
@qnikst да, но я пока его не прикручивал, просто хорошо, что он есть
Alexander
Блин чего бы подпилить интересного, в свободное время которого нет
Dmitry
у меня в постгресе materialized view для этих рядов строилась минут десять. а тут вся база раскатывается за 10 секунд из источников
Alexander
А то меня все вокруг расстраивает, и нужно что-то делать
Quet
левелдб кстати норм
Dmitry
короче если данные похожи на ряды, рсубд надо сразу выкидывать
Dmitry
прям сразу. на этапе дизайна еще. даже не пытаться
Alexander
monetdb!!!
Quet
особенно если write-heavy база и надо писать на крутящиеся диски)
Alexander
(не знаю хорошо ли, оно для рядов, просто одни клиенты юзают)
Quet
Alexander
Не вдавался в подробности
Dmitry
@quetzal что?
igo
Dmitry
@xamgore ну любые. например, вектора признаков для машинного обучения
Dmitry
я их два года назад пытался в постгресе собирать для анализа
Dmitry
оказалась полная шляпа, на State, Map и линзах запилил сторейдж с семантикой похожей на сикль и хранение в msgpack
Dmitry
норм, до сих пор работает
Dmitry
в текущей задаче вроде другая специфика, но как оказалось рсубд тоже только вредит
Dmitry
а еще её эволвить, а еще автоматическое накатывание релизов, миграция...
Dmitry
выкидываешь постгрес и сразу так всё хорошо
Dmitry
типы статические, запросы на человеческом языке, все мигрирует само
Dmitry
@quetzal да нахера что-то такое тащить в проект, если пока и само всё работает?