Quet
я просто кажется не видел к ней коннектора из хаскеля
Alexander
lmdb и lmdb-hight-level
Alexander
второй ужасен
Alexander
@quetzal кстати
Alexander
если поставить -DMDB_DEVEL=1 то тогда один код становится очень странным:
Alexander
#if SIZE_MAX > MAXDATASIZE if (data->mv_size > ((mc->mc_db->md_flags & MDB_DUPSORT) ? ENV_MAXKEY(env) : MAXDATASIZE)) return MDB_BAD_VALSIZE;
Alexander
но если расширение включено то ENV_MAX_KEY(env) = 0
Alexander
в итоге получаем if (data->mv_size > 0) return MDB_BAD_VALSIZE
Alexander
я тупой или это ошибка
Alexander
#if MDB_MAXKEYSIZE #define ENV_MAXKEY(env) (MDB_MAXKEYSIZE) #else
Alexander
#ifndef MDB_MAXKEYSIZE #define MDB_MAXKEYSIZE ((MDB_DEVEL) ? 0 : 511) #endif
Alexander
или подрузамевается, что если я делаю MDB_DEVEL то я и MAXKEYSIZE должен указать?*
Quet
угу
Alexander
а, разумно
Quet
то что надо указывать макс размер базы тоже печаль кстати (
Quet
но уж так оно мапит файл
Alexander
MAXKEYSIZE значительно ухудшит ситуацию, когда когда ключи мелкие?
Alexander
у них просто *где-то* огромные ключи, хотя в основном небольшие
Quet
мне кажется там хард лимит небольшой
Quet
то есть больше пары кб вы ключи туда не сунете
Alexander
511 по дефолту
Alexander
если не пересобирать
Quet
да, это дефолт
Quet
я про то что даже если пересобирать ты не можешь туда мегабайт воткнуть
Alexander
о ещё вопрос
Alexander
если я удаляю ключ соотвествующей именованной базе, на вся удалится?
Quet
не пробовал, но у тебя ж есть отдельный апи чтобы удалить базу
Dmitry
а reddis это обычный redis который все советуют в твитере?
Dmitry
и в чем причина съезда с него?
Alexander
померяли был в десятки раз медленее
Alexander
не знаю, это не мой проект
Quet
ну редис это ж сервер все же, понятно что там накладные расходы есть на то чтоб по сети сходить запрос отправить, распарсить, ответ кинуть и тд
Alexander
угу
Alexander
ещё вопрос
Quet
но если в скорость этого реально упираются... ну хз
Quet
а reddis это обычный redis который все советуют в твитере?
ты так ссылку на тредик про эрланг и не кинул! )
Alexander
если записи идут в общем-то в произвольное место, то есть ли смысл курсором пользоваться?
Dmitry
@quetzal там не очень зажигательно, Лапшин пару раз огрызнулся и всё. https://www.facebook.com/yuri.zhloba/posts/1488518801180246
Alexander
вообще для чего-нить
Alexander
а для чтения когда нужен курсор, а когда нет?
Quet
курсоры ж для итерации
Quet
если тебе надо просто значение по ключу взять -- не нужны
Dmitry
а есть способ мапить сишные структуры в хаскельное что-то и обратно?
Alexander
да, тут просто они на каждй чих
Alexander
прям маппить? нету
Alexander
есть Storable
Dmitry
суть такова, что есть сищный бинарный rpc
Dmitry
надо бы на хаскеле клиента сделать
Alexander
можно сделать reader, который аллоцировать почти не будет
Dmitry
ну т.е что-то более модное, чем Data.Binary
Dmitry
дата бинари я сам умею, это решение по умолчанию
Dmitry
да там нет никаких требований кроме руками не писать и что бы не расходились версии
Alexander
так rpc мапится на сишные структуры?
Alexander
что мапится то через storable и hsc2hs
Alexander
@quetzal т.е. если я не использую next/prev или как их там в курсоре или найти, потом изменить/удалить - то курсор мне не нужен?
Alexander
правильно?
Quet
ага ну еще если dup база то там можно получить курсор по ключу который стартует с первого элемента
Quet
и им перебрать дубли
Dmitry
@qnikst туда и обратно мапится. изначально да, описан просто как сищная структура
Dmitry
обычный POD без указателей
Anatolii
@qnikst а ты когда-то кидал код конвеншены которые вы у себя использутее, можешь подкинуть еще раз?
Alexander
https://github.com/tweag/guides/
Alexander
@voidlizard тогда storable и hsc2hs
Alexander
оно тебе ещё и некоторые изменения header-ов отловит
Dmitry
@qnikst спасибо, посмотрю. но свиг же у нас не принято использовать, если что?
Alexander
вроде нет
Alexander
ни разу не видел, чтобы использовали
Alexander
@quetzal я уже спросил но не могу найти где. удаление именованой базы, как удаление ключа работает?
Quet
в смысле как удаление ключа?
Quet
ты спрашивал что будет если удалить ключ который соответствует именованой базе я ответил что не пробовал так, но для дропа базы есть свой апи и наверное лучше его
Alexander
а ок
Alexander
пасиб
Alexander
ещё вопрос
Alexander
а не, нету вопроса
Alexander
на всякий случай, внутри транзакции я могу открывать и закрывать базы 100500 раз и если что все откатится нрмальн?
Alexander
а dup база, то значения в сортированном порядке, так? или до времени добавления?
Alexey 〒.
никогда не понимал, зачем так делать. особенно, если мало времени на изучение дают.
Чтоб студенты научились учиться) Самостоятельно разбираться, изучать.
Dmitry
вообще загадка, зачем (и как?) учить яп
Dmitry
если человеку надо - он научится