Russian Qt Forum

Программирование => Базы данных => Тема начата: Admin от Февраль 09, 2011, 10:57



Название: База данных SQL расположенная в памяти.
Отправлено: Admin от Февраль 09, 2011, 10:57
Есть задачка - нужно быстро делать выборки из базы данных. Важна скорость, а не надежность.
Принято было решение засунуть базу в память и работать там с ней.

Но никак не можем определиться с выбором базы данных - есть ли у кого опыт? Почитал про MySQL и таблицы типа HEAP - что то скорость не особо выростает по сравнению с ISAM.



Название: Re: База данных SQL расположенная в памяти.
Отправлено: Kolobok от Февраль 09, 2011, 11:11
Базы данных и так кэшируют данные в памяти, если памяти хватает.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: _govorilka от Февраль 09, 2011, 11:26
Можно попробывать SQLite: http://www.sqlite.org/inmemorydb.html (http://www.sqlite.org/inmemorydb.html). Возможно, его производительности и скорости хватит.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: BRE от Февраль 09, 2011, 11:33
2 Admin:
http://www.garret.ru/fastdb.html (http://www.garret.ru/fastdb.html)

Ты сразу не плюйся.  :)
Да, не стандартное решение, но скорость у нее была не плоха.
До боевых проектов она у меня не дошла, но хорошо погонял ее в свое время на тестах.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Admin от Февраль 09, 2011, 12:42
Ага спасибо попробую - насчет кеширования всеми базами - фиг знат. А вдруг не закешируют то что нада?
Попробую отпишусь


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Пантер от Февраль 09, 2011, 12:50
Admin, на счет кеширования в настройках надо копать. Вроде, что-то такое в постгресе или огнептице было.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Admin от Февраль 09, 2011, 13:36
Вот тесты я видел насчет mysql - резкого ускорения нет к сожалению)
Да и не нужно мне такие навороченные базы - это просто некоторый массив данных держащийся в памяти. Хочеться просто пробежаться по нему SQL запросом.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Admin от Февраль 09, 2011, 14:14
Можно попробывать SQLite: http://www.sqlite.org/inmemorydb.html (http://www.sqlite.org/inmemorydb.html). Возможно, его производительности и скорости хватит.

Тут как я понял толко 1 раз базу можно открыть?

Код:
So, opening two database connections each with the filename ":memory:" will create two independent in-memory databases.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: _govorilka от Февраль 09, 2011, 16:43
Тут как я понял толко 1 раз базу можно открыть?
Код:
So, opening two database connections each with the filename ":memory:" will create two independent in-memory databases.
Я не пробывал создавать в памяти две разные базы. Надо поэкспериментировать...


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Admin от Февраль 09, 2011, 17:07
Просто если несколько демонов щупают базу - то они получают разные базы в ответ.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: _govorilka от Февраль 10, 2011, 06:46
Просто если несколько демонов щупают базу - то они получают разные базы в ответ.
Можно написать собственный демон, который будет обращаться к базе, а все остальные будут обращаться к этому демону. Это, наверное, будет более правильно решение, чем несколько процессов, которые будут ковырять один и тот же кусок памяти.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Barmaglodd от Февраль 10, 2011, 07:36
SQL обязательно? Ключ-значение не подойдёт?
А ещё berkleydb имеет sql интерфейс, и она позволяет работать с несколькими пишущими потоками :)


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Пантер от Февраль 10, 2011, 08:20
_govorilka, по заданию скорость - критична. А демон - лишний посредник-тормоз.


Название: Re: База данных SQL расположенная в памяти.
Отправлено: Admin от Февраль 10, 2011, 09:16
Ключ -значение можно тогда ваще на базу незаморачиваться. Хранить всякие map и set в памяти). Только хотелось бы простые SQL запросы делать. Ща изучаю то что BRE посоветовал.