Alexander
Блин а чего б его руками не писать?
Alexander
Я правда не смотрел его с появления
Quet
Блин а чего б его руками не писать?
ну чтоб компилятор помогал с опечатками например
Dmitry
тупо мапами в памяти + простой иммутабельный сторейдж
Alexander
При появлении как идея клёвая, как реализация ну нафиг
Dmitry
гитоподобной структуры.
Dmitry
как сразу хорошо стало
Alexander
Ну нетривиальный запрос все равно хрен поможет написать
Quet
эээ.. а было плохо с постгресом?
Dmitry
+100500 к скорости разработки, -9000 от времени выполнения запросов
Quet
Ну нетривиальный запрос все равно хрен поможет написать
да не, это ж не орм какой, нетривиальное можно
Alexander
Никиты Волкова прикольная либа для пг
Alexander
Но запросы руками
Dmitry
ну, да. если данные похожи на ряды - то всё. постгресс отсасывает сразу
Anatolii
Все равно надо писать тетсы на код который в базу ходит, лучше уже предсказунмый SQL писать
Alexander
Ага которое полагается на оптимизатор базы
Dmitry
особенно с массивами
Dmitry
но если хранить в виде нормальных таблиц, то тоже просасывает, потому что тупо много записей получается
Dmitry
я кстати на это напарывался, когда делали машинное обучение - были дюже большие вектора признаков, я их было сначала в постгрес засунул, но оказалось, что там никак. тогда на линзах сделал ин-мемори структуру и ничо так, сразу улучшилось
Dmitry
да на небольших объемах
Quet
так опалай это как раз "запросы руками", просто sql собирается тайпсейфно
Dmitry
ну вот наш текущий пример запроса
Dmitry
запросы по сути не sql-ные
Dmitry
а например, найти сначала все минимальные паросочетания (размещение людей по номерам в зависимости возрастов и емкостей номеров), а потом найти все подходящие периоды - т.е слайсы векторов без дыр
Quet
я вот как раз думал кто-то поюзал либу волкова вместо симпла
Dmitry
ну в той истории да, были модификации. в текущий истории четко один читает, второй пишет
Dmitry
хотя что-то я не вижу проблем даже с конкурентным доступом в рамках одного процесса
Anonymous
а какие требования по durability?
Anonymous
а то это конечно понятно, что в память можно что угодно засунуть и будет классно
Quet
прост если самописное и инмемори, то можно влететь на проблемы с gc если там гигов 50-100 данных будет
Dmitry
@quetzal в итоге у меня есть пока прототип, который мне нравится и я решил его доделать и на нем запуститься. в кач-ве сторейджа в прототипе самописное, думал подсунуть level db но не знаю, зачем оно мне если база иммутабельная
Alexander
Будет 50 гигов - положишь в off-heap память
Alexander
Ну или выделишь в отдельный процесс где гц не будет совсем
Dmitry
@async_prince требования что бы данные не терялись есть
Alexander
Зачем?
Dmitry
@qnikst там много контента - блобы, тексты. я их конечно же уже выгружаю и достаю только когда они нужны
Quet
как ещё офхип сделать
Dmitry
а в памяти только хэши
Alexander
Будто в Haskell средств нет
Dmitry
говорю ж на подобие гита структура
Alexander
Аллокации есть, работа с raw памятью есть, что еще надо?
Quet
говорю ж на подобие гита структура
а сериализация этого всего -- тоже самописное?
Alexander
Даже заворачивается в безопасный апи
Anonymous
@async_prince требования что бы данные не терялись есть
ну и? как требования были удовлетворены? пока ты сказал, что были удовлетворены удобство разработки и скорость запросов.
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
(не знаю хорошо ли, оно для рядов, просто одни клиенты юзают)
Alexander
Не вдавался в подробности
Dmitry
@quetzal что?
Dmitry
@xamgore ну любые. например, вектора признаков для машинного обучения
Dmitry
я их два года назад пытался в постгресе собирать для анализа
Dmitry
оказалась полная шляпа, на State, Map и линзах запилил сторейдж с семантикой похожей на сикль и хранение в msgpack
Dmitry
норм, до сих пор работает
Dmitry
в текущей задаче вроде другая специфика, но как оказалось рсубд тоже только вредит
Dmitry
а еще её эволвить, а еще автоматическое накатывание релизов, миграция...
Quet
@quetzal что?
https://clickhouse.yandex/
Dmitry
выкидываешь постгрес и сразу так всё хорошо
Dmitry
типы статические, запросы на человеческом языке, все мигрирует само
Dmitry
@quetzal да нахера что-то такое тащить в проект, если пока и само всё работает?