libmdbx/TODO.md
Leo Yuriev 802c10f13f mdbx: log2shift instead of multiplication by pagesize.
Change-Id: I72c4c7699a409795459b466ff74c388b15b13687
2017-06-06 04:15:08 +03:00

4.9 KiB
Raw Blame History

Допеределки

  • разделение errno и GetLastError()
  • CI посредством AppVeyor
  • тест конкурентного доступа.
  • тест основного функционала (заменить текущий треш).
  • uint32/uint64 в структурах
  • Завершить переименование
  • Макросы версионности, сделать как в fpta (cmake?)
  • Попробовать убрать yield (или что там с местом?)
  • trinity для copy/compaction
  • trinity для mdbx_chk и mdbx_stat
  • проверки с mdbx_meta_eq
  • Не проверять режим при открытии в readonly
  • Поправить выбор tail в mdbx_chk
  • Там-же проверять позицию реклайминга
  • поправить проблему открытия после READ-ONLY.
  • static-assertы на размер/выравнивание lck, meta и т.п.
  • Зачистить size_t
  • Добавить локи вокруг dbi
  • Привести в порядок volatile
  • контроль meta.mapsize
  • переработка формата: заголовки страниц, meta, clk...
  • зачистка Doxygen и бесполезных коментариев.
  • Добавить поле типа контрольной суммы.
  • Добавить поле/флаг размера pgno_t.
  • Поменять сигнатуры.
  • Добавить мета-страницы в coredump, проверить lck
  • Сделать список для txnid_t, кода sizeof(txnid_t) > sizeof(pgno_t) и вернуть размер pgno_t
  • Избавиться от умножения на размер страницы (заменить на сдвиг).
  • Устранение всех предупреждений (в том числе под Windows).
  • Перевод mdbx-tools на С++ и сборка для Windows
  • Заменить заглушки mdbx_version и mdbx_build
  • Актуализация README.md

CI

  • Прикрутить проверку coverity
  • Добавить в CI linux сборки для 32-битных таргетов

Доработки API

  • Добавить возможность "подбора" режима для mdbx_env_open()
  • Дать возможность задавать размер страницы при создании БД.
  • Изменение mapsize через API с блокировкой и увеличением txn, плюс поправить доку.
  • Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении.
  • Инкрементальный mmap.
  • Возврат выделенных страниц в unallocated tail-pool.
  • Инкрементальное приращение размера (колбэк стратегии?).
  • Переименовать в API: env->db, db->tbl

Тест

  • Реализовать cleanup в тесте
  • usage для теста
  • Логирование в файл, плюс более полный progress bar
  • Опция игнорирования (пропуска части теста) при переполнении БД
  • Додумать имя и размещение тестовой БД по-умолчанию.
  • Базовый бенчмарк

Отладка

  • Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка)
  • Заменить mdbx_debug на mdbx_trace, и почистить...
  • Заметить максимум assert() на mdbx_assert(env, ...)

Развитие

  • Валидатор страниц БД по номеру транзакции: ~0 при переработке и номер транзакции при выделении, проверять что этот номер больше головы реклайминга и не-больше текущей транзакции.
  • Добавить free_backlog в meta
  • Валидатор страниц по CRC32, плюс контроль номер транзакии под модулю 2^32.
  • Валидатор страниц по t1ha c контролем снимков/версий БД на основе Merkle Tree.
  • Возможность хранения ключей внутри data (libfptu)
  • Асинхронная фиксация (https://github.com/ReOpen/libmdbx/issues/5)
  • (Пере)Выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages)