Взгляните на наше устройство Synopse Big Table .
С его недавним обновлением, оно может идеально соответствовать вашим потребностям.
Вот как вы создаете полеlayout:
var Table: TSynBigTableRecord;
FieldText, FieldInt: TSynTableFieldProperties;
begin
Table := TSynBigTableRecord.Create('FileName.ext','TableName');
FieldText := Table.AddField('text',tftWinAnsi,[tfoIndex]);
FieldInt := Table.AddField('Int',tftInt32,[tfoIndex,tfoUnique]);
Table.AddFieldUpdate;
Для хранения массива байтов или целых чисел, просто используйте поле типа tftWinAnsi
или даже лучше tftBlobInternal
(это истинное поле переменной длины), затем сопоставьте его сили из динамического массива, например RawByteString
.
. Вы можете смело добавлять поля позже, файл данных будет обработан для вас.
Существует несколько способов обработки данных,но я реализовал вариантный вариант использования записи с истинным поздним связыванием:
var vari: Variant;
// initialize the variant
vari := Table.VariantVoid;
// create record content, and add it to the database
vari.text := 'Some text';
vari.int := 12345;
aID := Table.VariantAdd(vari);
if aID=0 then
ShowMessage('Error adding record');
// how to retrieve it
vari := Table.VariantGet(aID);
assert(vari.ID=aID);
assert(vari.INT=12345);
assert(vari.Text='Some text');
О скорости, , вы не можете найти ничего быстрее IMHO .Создание на моем ноутбуке 1 000 000 записей с некоторым текстом и целочисленным значением, причем оба поля используют индекс, а целочисленное поле установлено как уникальное, занимает менее 880 мс.Он будет использовать очень мало дискового пространства, потому что все хранилище закодировано переменной длины (аналогично буферам протокола Google).
Требуется всего два модуля, работает с Delphi 6 до XE (и уже готов к Unicodeпоэтому, используя это устройство, вы можете безопасно перейти на более новую версию Delphi, когда захотите).Нет необходимости в установке, а всего лишь несколько килобайт добавлено в ваш исполняемый файл.Это всего лишь небольшой, но мощный движок NoSQL, написанный на чистом Delphi, но обладающий мощью использования базы данных (т. Е. Макета чистого поля) и скоростью движка в памяти, без ограничений по размеру.
И это полный OpenSource с разрешающей лицензией.
Обратите внимание, что мы также предоставляем оболочку SQLite3 , но это еще один проект.Медленнее, но мощнее, с поддержкой SQL и интегрированным клиент / серверным ORM.