Страница 1 из 1

Embedded Server. Загрузка БД из памяти

Добавлено: 06 ноя 2014, 15:25
flyingbird
Добрый день!
Есть БД, состоящая из разных таблиц. Часть таблиц относятся к справочным данным, доступ к которым должен быть возможен только из кода программы.
Рассматриваю различные варианты, как это реализовать.
1. "Прозрачное" шифрование полей. Не очень подходит из-за большого кол-во операций шифровки/расшифровки
2. Перенести нужные таблицы в отдельную БД, сохранить ее в главной БД как блоб. При инициализации справочников происходит чтение, расшифровка и распаковка БД со справочниками в память.
При изменении "справочных" таблиц - упаковка, шифрование, update записи.
Думаю, на производительности это сильно не скажется, т.к. записей в этих таблицах не больше 5000, select blobdbfield / update происходят редко (при запуске программы/изменении справочника)

Собственно, вопрос:
Можно ли реализовать Embedded версию так, чтобы Embedded сервер загружал бд не из файла, а из памяти?

Спасибо!

Re: Embedded Server. Загрузка БД из памяти

Добавлено: 06 ноя 2014, 16:57
kdv
Можно ли реализовать Embedded версию так
нет. в том смысле, что кроме вас этого никто делать не будет.
Вы же - да, можете самостоятельно переписать код embedded, чтобы перед createfile некий файл загружался в память, а дальше открывался именно оттуда.
Но если вы будете распространять такую версию Embedded, то вы будете обязаны выложить измененный код. И не будете иметь права называть модификацию Firebird-ом.

Re: Embedded Server. Загрузка БД из памяти

Добавлено: 06 ноя 2014, 17:23
flyingbird
Спасибо!
Распространять не буду, назову как-нибудь по-другому :))) Код не жалко)
Просто не хотелось так заморачиваться с переписыванием. Думал, может есть функция типа LoadFromBuf.

Re: Embedded Server. Загрузка БД из памяти

Добавлено: 06 ноя 2014, 20:59
kdv
Код не жалко)
тут нет такого, жалко или не жалко. модифицированный код вы обязаны предоставить по условиям лицензии.
Думал, может есть функция типа LoadFromBuf.
просто это никому не нужно. Обычно с БД работают и на чтение и на запись, а в вашем случае изменения будут только в памяти, что на компах пользователей весьма опасно потерей данных.
Я бы вам предложил не морочить голову, а класть ваши секретные таблицы в формат ClientDataSet, который как раз можно и в блоб положить.