Skip to content

Latest commit

 

History

History
207 lines (197 loc) · 17.7 KB

TODO.md

File metadata and controls

207 lines (197 loc) · 17.7 KB

Допеределки

  • mdbx: сборка посредством CMake (детектирование необходимости выравнивания, endianess, размера страницы и т.п.)
  • fpta: юнит-тест для fpta_table_clear().
  • mdbx: зафиксировать формат БД.
  • fpta: пробросить обновленный API управления размером.
  • fpta: add "Basic Exponential Smoothing" to inplace saturated ops.
  • fpta, fptu: использовать "нативные" коды ошибок в Windows.
  • fpta: флажок O_CREATE при открытии БД.
  • fpta: контроль версии, плюс номер версии уровня приложения.

Оперативное

  • fpta: composite indexes (включая unique constraints).

Качество

  • limits: вставка "максимальных" записей: строки максимальной длины, максимальное кол-во полей, максимальный размер кортежей, для разных индексов, и т.п.
  • limits: когда и как умираем: максимум таблиц, с максимумом колонок, с максимумом индексов.
  • qa: стохастический сценарий конкурирующих читателей, писателей и "изменятелей" схемы.
  • qa: длительный нагрузочный тест с отслеживанием latency и throughput для нескольких (3-5) вариантов схемы/запросов.
  • qa: проверка durability для всех режимов.
  • bench: тест производительности с итеративным усложнением схемы (кол-во колонок, и индексов).

Оптимизация

  • mdbx: добавить в интерфейс минимум для поддержки внешней аллокации внутренних объектов, которые требуется для курсоров и транзакций.
  • fpta: поддержка пулов и/или внешней аллокации объектов для курсоров и транзакций.

Удобство

  • fptu, fpta: плюшки для С++, конструкторы объектов, гарды, operator[], смузи-шаблончики, хелперы и т.п.
  • демонстрация на C основных возможностей и скорости.
  • демонстрация на C++ сервиса/удобства и скорости.

Развитие

  • fpta: дополнительные std::to_string(), в том числе для отладки и питона.
  • mdbx: добавить поддержку маркера версии в CMake и API.
  • fptu/fpta: пробросить API в python.
  • fptu: поддержка nested tuples.
  • fptu: поддержка массивов.
  • fptu: поддержка сортированных кортежей.
  • fptu: сериализация/десериализация в JSON.
  • mdbx: реализовать "мягкий" возврат страниц в unallocated-пул.
  • all: поддержка схемы типов.
  • all: генерация байндингов по описанию типов схемы.
  • mdbx: асинхронная фиксация, очередь чекпоинтов, триггеры и пороги, автоматическая конвертация weak в steady. Цель доработок в том, чтобы асинхронная фиксация данных выполнялась в соответствии с порядком транзакций, а также автоматически отражалась в сильных (strong) контрольных точках. Таким образом, чтобы при заданном (контролируемом пользователем или максимальном) уровне загрузки дисковой подсистемы, последняя сильная контрольная точка минимально отставала от последней асинхронно завершенной транзакции.
  • all: версионность символов для ldso-библиотек.

Недоделки

  • all: сборка в виде пакетов.
  • all: подготовка релиза (информация о версии, NEWS, CHANGELOG, агрегация лицензий).
  • fpta: дополнить README.

Юнит-тесты

  • composite: большой комбинаторный тест генерации составных ключей с контролем их порядка (ordering) для всех сочетаний колонок, включая nullable, простукивание DENIL-значений, проверку obverse/reverse как для составного индекса, так и для компонентов, в том числе с превышением fpta_max_keylen.
  • filter: проверка фильтра для кортежа.
  • filter: больше, меньше, равно, не-равно.
  • filter: and, or, not.
  • filter: вызов функтора.
  • select: выборка с range: от begin, до end, между begin и end.
  • select: проверка выборки с фильтром.
  • select: хождение курсором с фильтром: "конем" вперед/назад, в начало/конец, по возрастанию/убыванию.
  • select: хождение курсором с фильтром по range с проверкой стопора на границах и вылета из диапазона.
  • select: позиционирование на конкретные и ближайшие значения, проверка на выход из range.
  • crud: вставка 1-2-3 больших записей, проба дубликатов, обновление, проверка наличия, удаление.
  • crud: вставка 1-2-3 миллионов небольших записей, проба дубликатов, проверка наличия, обновление, удаление.
  • crud: вставка 1-2-3 тысяч больших записей, проба дубликатов, обновление, проверка наличия, удаление.
  • crud: с инжектированием ошибок при изменениях.
  • corny: проверка всех констант/флагов и комбинаций на допустимость/корректность.
  • open: проверка на поврежденных базах (не mdbx).
  • open: проверка на кривых базах (без схемы, без части таблиц).
  • open: проверка с поврежденной и некорректной схемой.
  • schema: превышение всяческих лимитов, кол-ва индексов, на запрещенные комбинации.
  • schema: с неверными def-записями схемы.
  • schema: с инжектированием ошибок при изменении схемы.
  • schema: откат изменений при прерываний транзакции (или перенести в транзакции).
  • schema: конкурирующее обновление схемы (проверка кэширования и авто-обновления).
  • key: конвертация ключа в значение (для всех комбинаций типов ключей и значений).
  • cursor: проверка коллизий при изменении/удалении данных в обход курсора (через другой курсор, непосредственно).
  • fpta: юнит-тест для последовательностей.
  • fpta: юнит-тесты схемы для nullable колонок.
  • fpta: юнит-тесты индексов для nullable колонок.
  • fpta: юнит-тесты обновлений для nullable колонок.
  • fpta: юнит-тесты inplace-saturated: min, max, add, sub.
  • fpta: юнит-тесты для cursor_inplace().

Сделано

  • smoke: тесты для курсоров с диапазонами и фильтрами.

  • fpta: API для получения списка всех таблиц.

  • qa: встроенное тестирование с Valgrind.

  • cursor: позиционирование на конкретные и ближайшие значения.

  • cursor: позиционирование на ближайшие значения, с контролем lower-bound для обратной сортировки, в том числе с дубликатами.

  • cursor: проверка удаления с контролем перехода к следующей записи, удаление последней записи, удаление первой при обратном порядке.

  • cursor: обновление строки с изменением ключа (FPTA_KEY_MISMATCH).

  • fpta: додумать и доделать fpta_cursor_locate().

  • fpta: пробросить или продублировать коды MDB-ошибок в fpta.

  • fpta, fptu: fpta_strerror() и прочие "строки".

  • fptu: обработка быстрых случаев при сравнении кортежей.

  • all: допеределать поддержку CFLAGS для различных типов сборок в CMake.

  • fpta: добавить поддержку маркера версии в CMake и API.

  • fpta: сборка в виде динамической библиотеки (не экспортировать лишнего).

  • mdbx: добавить функцию получения статуса страницы с данными, чтобы позволить копирование-по-необходимости из грязных страниц.

  • fpta: API для получения списка колонок и их атрибутов для заданной таблицы.

  • mdbx: подумать о выносе компараторов из транзакций в env, с установкой непосредственно из аргументов open_dbi().

  • all: поддержка travis-ci.

  • fpta: контроль alterable-schema и пропуск schema_rwlock.

  • fptu, fpta: datetime вместо fptu_192. Исходно есть возможность хранить время в fput_uint64_t, но в последствии пришло понимание что явный тип удобнее, так как страхует от ряда ошибок.

  • fpta: fptu_now().

  • fpta: возможность предварительной проверки корректности insert/update (уникальность для индексов).

  • mdbx: добавить уровень "mustdie.h" для некой поддержки Windows (должно собираться и немного работать).

  • corny: проверка валидатора имен таблиц/колонок.

  • corny: проверка fptu_now().

  • open: базовый тест на открытие/создание БД в различных режимах.

  • schema: описания колонок с корректными и не-корректными параметрами.

  • schema: базовый тест создания схемы.

  • smoke: простой тест с одним первичным индексом: создание БД, схемы, вставка, обновление, удаление, перемещение курсора.

  • smoke: простой тест с одним вторичным индексом: создание БД, схемы, вставка, обновление, удаление, перемещение курсора.

  • smoke: проверка изменений через вторичные индексы, в том числе с нарушением уникальности.

  • smoke: проба fpta_del() для записи с существующим PK, но различием в данных.

  • data: проверка конвертации, выход вне диапазона типа.

  • data: проверка сравнения для всех комбинаций типов полей и типов значений.

  • key: формирование ключей для всех индексируемых типов и всех типов индексов.

  • key: проверка упорядоченности и уникальности ключей.

  • key: плохие типы, плохие значения, потеря точности.

  • key: длинные ключи.

  • index: создание таблиц с одним PK для всех типов полей и всех типов индексов.

  • index: заполнение и последовательная выборка с контролем порядка для ordered.

  • index: заполнение и выборка с контролем полноты для unordered.

  • index: длинные ключи, obverse/reverse, string/binary, создание и выборка с контролем последовательности.

  • index: базовый тест вторичных индексов.

  • index: комбинаторный тест всех типов PK со всеми вариантами вторичных индексов.

  • cursor: по всем типам полей и индексов: выборка без range, с контролем последовательности и/или полноты, по возрастанию/убыванию.

  • cursor: совместимость ordered/unordered.

  • cursor: хождение "конем" вперед/назад, в начало/конец.

  • cursor: по возрастанию/убыванию.

  • cursor: хождение по дубликатам, первый/последний, вперед/назад, "конем".

  • cursor/smoke: недопустимость update с изменением ключа.

  • cursor/smoke: обновление с изменением PK.

  • cursor/smoke: обновление с изменением 1-2-3-максимумом колонок.

  • crud/smoke: создание таблиц с одним PK для всех типов полей и всех типов индексов.

  • crud/smoke: вставка 1-2-3 небольших записей, проба дубликатов, обновление, проверка наличия, удаление.

  • crud/smoke: обновление с изменением 1-2-3-всех колонок.

  • crud/smoke: вставка/обновление с нарушением уникальности.

  • crud: добавление нулевых и не-нулевых как значений,так и ключей в различном порядке.

  • mdbx: поддержка Windows.

  • fpta: быстрая очистка таблиц (без итерирования строк).

  • mdbx: поддержка последовательностей для БД.

  • fpta: поддержка последовательностей для БД.

  • mdbx: поддержка последовательностей для таблиц.

  • fpta: поддержка последовательностей для таблиц.

  • mdbx: динамическое управление размером БД (NtExtendSection(), etc).

  • fpta: поддержка паттерна visitor.

  • fpta: inplace saturated operations (min,max,add,sub) for numbers.

  • mdbx: стохастический тест конкуренции, в том числе для Windows.

  • fpta: убрать заглушку libmdbx для Windows.

  • fpta: API для получения информации о таблице, включая кол-во строк.

  • fpta: smoke-тесты nullable.

  • fpta: чистка дескрипторов созданных таблиц при откате транзакций.

  • fpta: убрать костыль не-кешировать при открытии таблиц во write-транзакциях.

  • fpta: деструкторы для структурных типов.

  • Проверка посредством Coverity с гашением всех дефектов.

  • Полная матрица Windows-сборок (2013/2015/2017).

  • [x[ fptu: fast-int и double_t.

  • fptu: поддержка сборки с LTO.

  • [x[ fpta: fast-int и double_t.

  • fpta: поддержка сборки с LTO.

  • mdbx: завершить оптимизацию mdbx_open_dbi_ex() с установкой компараторов.

  • mdbx: избавиться от умножений на размер страницы (заменить на сдвиг).