Захотелось с удобствами поиграть в памяти связанными цифровыми данными в новой Delphi, нескольо десятков или сотен КБ.

Создавать множество MemoryTables с Master|Lookup уже не хочется, опять же индексы придётся делать....

С SQL-альтернативами пока тоже негусто.

NexusDB пока для XE2 не выпустили
Так же и SQLmemTable
Т.е. без внешнизз DLL пока не обойтись.

У CSQL вроде нет Delphi-обвязки.
Вездесущий SQLite.... Zeus уже пару лет как альфа, SqlPass тоже год не обновлялся и про автора не слышно...

Да и не хочется их изучать (серверы и библиотеки доступа), хотя м.б. и стоило бы :-)

С другой стороны FB никак не умеет работать с in-memory таблицами по типу того же SQLite. Создавать их во временных файлах можно, но не очень хочется. Очищать их, удалять при выходе (или не удалять, если программа вышла неправильно). На линуксе вроде можно /dev/shmXX открыть или открыв файл удалить его имя - и будет временый файл самоудаляться автоматически. На винде и этого нет.


И вот в 2.5.1. интересная новость - можно читать/писать GT-таблицы в ReadOnly базах. Неплохо. Можно не скриптами создавать БД, а создать заготовку и српятать её внутри exe (если не нужно ничего кроме GTT)
Ну разве что ещё генераторы бы :-)...
Но не обязательно



Так к чем у это всё - ведь практически все сделано для in-memory БД для FB Embedded ! Все "постоянные" данные меняться в RO-базе не могут. Да их может и вообще нету кроме системных таблиц. В Windows файл в памяти должен создаваться с постоянным размером - но это не проблема для RO-базы.

Остаётся один раз прочитать в кэш и там держать. А вся реальная работа в GTT.


Насколько сложно в FBEmbedded сделать поддержку полностью безфайловой БД ?
Или через спец-API, или через особое имя файла как в SQLite (тогда все компоненты доступа можно будет не переделывать например. И прогармма из режима просмотрщик/справочник может переключаться в режим редактирования просто изменением настроек и выкладыванием отдельным файлом полноценной не-RO базы).

Возможно даже - открывать не-RO базу в памяти в RO-режиме, для простоты, чтобы режим не переключать перед сборкой :-)


Самое сложное, кажется, было реализовать работу с данными "только в памяти" - но её уже реализовали. Теперь бы только ещё открывать базу по void* - остальное-то вроде уже готово.

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/

Ответить