
Quet
15.02.2017
10:14:26
я просто кажется не видел к ней коннектора из хаскеля

Alexander
15.02.2017
10:15:20
lmdb и lmdb-hight-level
второй ужасен
@quetzal кстати

Google

Alexander
15.02.2017
10:17:30
если поставить -DMDB_DEVEL=1 то тогда один код становится очень странным:
#if SIZE_MAX > MAXDATASIZE
if (data->mv_size > ((mc->mc_db->md_flags & MDB_DUPSORT) ? ENV_MAXKEY(env) : MAXDATASIZE))
return MDB_BAD_VALSIZE;
но если расширение включено то ENV_MAX_KEY(env) = 0
в итоге получаем if (data->mv_size > 0) return MDB_BAD_VALSIZE
я тупой или это ошибка
#if MDB_MAXKEYSIZE
#define ENV_MAXKEY(env) (MDB_MAXKEYSIZE)
#else
#ifndef MDB_MAXKEYSIZE
#define MDB_MAXKEYSIZE ((MDB_DEVEL) ? 0 : 511)
#endif
или подрузамевается, что если я делаю MDB_DEVEL то я и MAXKEYSIZE должен указать?*

Quet
15.02.2017
10:20:49
угу

Alexander
15.02.2017
10:21:06
а, разумно

Quet
15.02.2017
10:21:32
то что надо указывать макс размер базы тоже печаль кстати (
но уж так оно мапит файл

Alexander
15.02.2017
10:21:50
MAXKEYSIZE значительно ухудшит ситуацию, когда когда ключи мелкие?

Google

Alexander
15.02.2017
10:22:05
у них просто *где-то* огромные ключи, хотя в основном небольшие

Quet
15.02.2017
10:24:06
мне кажется там хард лимит небольшой
то есть больше пары кб вы ключи туда не сунете

Alexander
15.02.2017
10:24:32
511 по дефолту
если не пересобирать

Quet
15.02.2017
10:24:53
да, это дефолт
я про то что даже если пересобирать ты не можешь туда мегабайт воткнуть

Alexander
15.02.2017
10:26:06
о ещё вопрос
если я удаляю ключ соотвествующей именованной базе, на вся удалится?

Quet
15.02.2017
10:27:53
не пробовал, но у тебя ж есть отдельный апи чтобы удалить базу

Dmitry
15.02.2017
10:33:02
а reddis это обычный redis который все советуют в твитере?
и в чем причина съезда с него?

Alexander
15.02.2017
10:34:17
померяли был в десятки раз медленее
не знаю, это не мой проект

Quet
15.02.2017
10:35:02
ну редис это ж сервер все же, понятно что там накладные расходы есть на то чтоб по сети сходить
запрос отправить, распарсить, ответ кинуть и тд

Alexander
15.02.2017
10:35:22
угу
ещё вопрос

Quet
15.02.2017
10:35:28
но если в скорость этого реально упираются... ну хз

Alexander
15.02.2017
10:35:53
если записи идут в общем-то в произвольное место, то есть ли смысл курсором пользоваться?

Google

Dmitry
15.02.2017
10:36:51
@quetzal там не очень зажигательно, Лапшин пару раз огрызнулся и всё. https://www.facebook.com/yuri.zhloba/posts/1488518801180246

Quet
15.02.2017
10:37:10

Alexander
15.02.2017
10:37:27
вообще для чего-нить
а для чтения когда нужен курсор, а когда нет?

Quet
15.02.2017
10:46:17
курсоры ж для итерации
если тебе надо просто значение по ключу взять -- не нужны

Dmitry
15.02.2017
10:46:32
а есть способ мапить сишные структуры в хаскельное что-то и обратно?

Alexander
15.02.2017
10:46:34
да, тут просто они на каждй чих
прям маппить? нету
есть Storable

Dmitry
15.02.2017
10:46:48
суть такова, что есть сищный бинарный rpc
надо бы на хаскеле клиента сделать

Alexander
15.02.2017
10:47:07
можно сделать reader, который аллоцировать почти не будет

Dmitry
15.02.2017
10:47:11
ну т.е что-то более модное, чем
Data.Binary
дата бинари я сам умею, это решение по умолчанию
да там нет никаких требований кроме руками не писать и что бы не расходились версии

Alexander
15.02.2017
10:49:40
так rpc мапится на сишные структуры?
что мапится то через storable и hsc2hs
@quetzal т.е. если я не использую next/prev или как их там в курсоре или найти, потом изменить/удалить - то курсор мне не нужен?
правильно?

Google

Quet
15.02.2017
10:52:42
ага
ну еще если dup база то там можно получить курсор по ключу который стартует с первого элемента
и им перебрать дубли

Dmitry
15.02.2017
10:54:43
@qnikst туда и обратно мапится. изначально да, описан просто как сищная структура
обычный POD без указателей

Anatolii
15.02.2017
10:55:47
@qnikst а ты когда-то кидал код конвеншены которые вы у себя использутее, можешь подкинуть еще раз?

Alexander
15.02.2017
10:56:11
https://github.com/tweag/guides/
@voidlizard тогда storable и hsc2hs
оно тебе ещё и некоторые изменения header-ов отловит

Dmitry
15.02.2017
10:57:39
@qnikst спасибо, посмотрю. но свиг же у нас не принято использовать, если что?

Alexander
15.02.2017
10:58:20
вроде нет

Admin
ERROR: S client not available

Alexander
15.02.2017
10:58:27
ни разу не видел, чтобы использовали
@quetzal я уже спросил но не могу найти где.
удаление именованой базы, как удаление ключа работает?

Quet
15.02.2017
11:15:19
в смысле как удаление ключа?
ты спрашивал что будет если удалить ключ который соответствует именованой базе
я ответил что не пробовал так, но для дропа базы есть свой апи и наверное лучше его

Alexander
15.02.2017
11:16:37
а ок
пасиб
ещё вопрос
а не, нету вопроса
на всякий случай, внутри транзакции я могу открывать и закрывать базы 100500 раз и если что все откатится нрмальн?

Google

Alexander
15.02.2017
11:23:09
а dup база, то значения в сортированном порядке, так? или до времени добавления?

AxiS
15.02.2017
11:40:47

Dmitry
15.02.2017
11:43:12
вообще загадка, зачем (и как?) учить яп
если человеку надо - он научится
если не надо - не научится

Quet
15.02.2017
11:43:30

Alexander
15.02.2017
11:43:37
ы
отлично

Quet
15.02.2017
11:43:45

Alexander
15.02.2017
11:43:58
подбазы
именованные в смысле

Quet
15.02.2017
11:46:08
открываешь базу, в ней транзакцию..
или вопрос был как транзакцию на несколько баз делать?
если db не указывать транзакции то она будет на весь env твой
и там да, создаешь-удаляешь как хочешь
и можешь откатить

Alexander
15.02.2017
11:56:47
ок, отлчино
ещё вопрос, без курсора у меня put/get работают по всем базам открытым, так?
@quetzal ^^
извиняюсь, что я тебя как расширенную документацию использую и спасибо за ответы

Quet
15.02.2017
12:00:05
ну не, по дефолту put/get работают с main database в твоем env
(та которая без имени)
ты если хочешь get по всем базам сделать то можно итератором из основной базы вытащить имена всех остальных и потом по ним пройтись
но если такое надо делать -- скорее всего не надо было делить базу на именованые )