libmdbx/TODO.md
2018-05-29 03:00:48 +03:00

5.9 KiB
Raw Blame History

Допеределки

  • Перевод mdbx-tools на С++ и сборка для Windows.
  • Переход на CMake, замена заглушек mdbx_version и mdbx_build.
  • Актуализация README.md
  • Переход на C++11, добавление #pramga detect_mismatch().
  • Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка).
  • Заменить mdbx_debug на mdbx_trace, и почистить...
  • Заметить максимум assert() на mdbx_assert(env, ...).

Качество и CI

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

Доработки API

  • Поправить/Добавить описание нового API.
  • Добавить возможность "подбора" режима для mdbx_env_open().
  • Переименовать в API: env->db, db->tbl.

Тесты

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

Развитие

  • Отслеживание времени жизни DBI-хендлов.
  • Отрефакторить mdbx_freelist_save().
  • Хранить "свободный хвост" не связанный с freeDB в META.
  • Возврат выделенных страниц в unallocated tail-pool.
  • Валидатор страниц БД по номеру транзакции: ~0 при переработке и номер транзакции при выделении, проверять что этот номер больше головы реклайминга и не-больше текущей транзакции.
  • Размещение overflow-pages в отдельном mmap/файле с собственной геометрией.
  • Зафиксировать формат БД.
  • Валидатор страниц по CRC32, плюс контроль номер транзакии под модулю 2^32.
  • Валидатор страниц по t1ha c контролем снимков/версий БД на основе Merkle Tree.
  • Возможность хранения ключей внутри data (libfptu).
  • Асинхронная фиксация (https://github.com/leo-yuriev/libmdbx/issues/5).
  • (Пере)Выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages).

Сделано

  • разделение 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).
  • Добавить 'mti_reader_finished_flag'.
  • Погасить все level4-warnings от MSVC, включить /WX.
  • Проверка посредством Coverity с гашением всех дефектов.
  • Полная матрица Windows-сборок (2013/2015/2017).
  • Дать возможность задавать размер страницы при создании БД.
  • Изменение mapsize через API с блокировкой и увеличением txn.
  • Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении.
  • Инкрементальный mmap.
  • Инкрементальное приращение размера (колбэк стратегии?).