LINUX.ORG.RU

Реляционная база в памяти


0

0

В общем, хочется такую штуку: - чтобы все жило в оперативке - чтобы поддерживались большие объемы (миллионы записей) - чтобы поддерживалась ссылочная целостность (внешние ключи) - чтобы были триггеры - чтобы были транзакции - чтобы можно было выгрузить в файл и загрузиь из него (а лучше - в поток) - чтобы был API на С++ - запросы всякие там - это в общем, не очень критично...

Существует ли такое в природе? Или нужно опять самому изобретать велосипед? Интересует именно решение, реализованное именно чисто на оперативной памяти (т.е. рамдиск+мускул не прокатит)

А в мускуле вам не подойдут temporary tables (CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name), которые живут исключительно в памяти?
(Есть однако ограничение: you can use the `TEMPORARY' keyword when you
create a table. The name is restricted to the current connection, and
the temporary table will automatically be deleted when the connection
is closed.)

geekkoo
()

хмм, почему же рамдиск не катит?

lg ★★
()
Ответ на: комментарий от geekkoo

Нет, такой вариант не подойдет. Я забыл написать еще одно - клиент-серверной модели нету. Т.е. никаких соединений - имеется один самодостаточный exe-шник и все должно жить в нем. Попытка работать через соединение - это как минимум запуск отдельного потока, чего в данном случае ОЧЕНЬ не хочется...

Flogger_d
() автор топика
Ответ на: комментарий от Flogger_d

>>>клиент-серверной модели нету.
>>>Попытка работать через соединение - это как минимум запуск отдельного потока, чего в данном случае ОЧЕНЬ не хочется...
Так это ж, типа, стандарт для баз данных. И что значит запуск? Скажем, на одном компе у вас сидит сервер (независимо от клиента), а клиент соединяется с ним по мере надобности. Что именно вы тут запускаете (клиент слинкован с ***db-lib)?
Без клиент-серверной модели IMHO нужно смотреть в сторону sql-lite.

geekkoo
()

Обязательно в памяти? Можно в файле - sqlite.

baklan
()

>Нет, такой вариант не подойдет. Я забыл написать еще одно - клиент-
>серверной модели нету. Т.е. никаких соединений - имеется один
>самодостаточный exe-шник и все должно жить в нем. Попытка работать
>через соединение - это как минимум запуск отдельного потока, чего в
>данном случае ОЧЕНЬ не хочется...

Может вам просто нужна embeded БД? И почему именно в памяти? Вам всеравно прийдется выгружать данные в файл.

Возмите embeded mysql (тут говорили что еще сырой и глючный) или как сказали sqlite...

Aleks_IZA
()

Зачем интересно транзакции?

Ведь они придуманы для сохранения целостности данных на диске при неожиданных перезагрузках, но у тебя при перезагрузке пропадут все данные, зачем же тебе транзакции

anonymous
()
Ответ на: комментарий от anonymous

Не только. Ещё для изоляции конкурирующих сессий (в данном случае вряд ли потребно), и для rollback-а, если вдруг что-то случается на стадии предварительной обработки входных данных (ой да блин, хотя бы даже для отработки кнопочки "undo").

baklan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.