Реляционная БД в памяти? - PullRequest
6 голосов
/ 16 марта 2011

У меня простой вопрос по Redis. Если ключ к производительности в том, что он находится в памяти, то почему это нельзя сделать на обычной базе данных SQL?

Ответы [ 6 ]

8 голосов
/ 16 марта 2011

Любая СУБД может быть запущена «в памяти». Рассмотрим использование ramdisk . Однако большинство СУБД (с SQL) не предназначены для работы полностью в памяти и прикладывают много усилий для минимизации дискового ввода-вывода и подкачки: СУБД работает очень усердно, чтобы сохранить " релевантные данные "горячие (в памяти и в кэше) - медленный ввод-вывод, медленный медленный.

Это потому, что данные базы данных часто [и исторически были] значительно больше , чем основная память. Это и основная память являются энергозависимыми :-) [СУБД ACID выполняют большую часть работы с ведением журнала записи - в энергонезависимое хранилище - и другими методами, чтобы гарантировать, что данные никогда не будут повреждены, даже в случае неожиданного завершения работы. ]

Некоторые базы данных, такие как SQLite, используют один и тот же формат для хранилищ диска и памяти, хотя они явно поддерживают хранилище в памяти. Поддержка других серверных [in-memory] и настроек использования памяти зависит от поставщика.

Удачного кодирования.

5 голосов
/ 28 марта 2011

Вас может заинтересовать VoltDB

2 голосов
/ 28 марта 2011

Вас может заинтересовать TimesTen (что сейчас Oracle).

В 11g его SQL значительно улучшилось, хотя все еще не так сильно, как у Oracle.

2 голосов
/ 16 марта 2011

Ключ не только в памяти, но и в более простых операциях, чем в БД SQL. Redis имеет простые операции, такие как GET, SET (и т. Д.) С использованием хеш-таблиц и других оптимизированных структур данных.

Базы данных SQL обычно требуют больше времени для вычислений, однако они более гибкие и в большинстве случаев более мощные (в зависимости от типа запросов). Вы наверняка не можете запускать JOIN-запросы в Redis, например

1 голос
/ 11 августа 2011

В БД в ОЗУ: Традиционные базы данных в конечном итоге окажутся в ОЗУ :

Традиционные данные базы данных - записи транзакций человека [...] - не будут расти так быстро, поскольку закон Мура делает компьютерные чипы дешевле .

И эта точка имеет прямое следствие, а именно:

Становится все более доступным полностью помещать традиционные данные в ОЗУ.

1 голос
/ 16 марта 2011

Вы можете сделать это изначально с некоторыми системами управления базами данных SQL. Но есть риски.

Вы теряете данные, например, в случае сбоя сервера. Я не думаю, что вы можете получить ACID-совместимые транзакции; любой файл журнала должен быть записан на диск, чтобы выдержать сбой сервера. (Я полагаю, что базы данных SQL в памяти все еще могут записывать файлы журналов на диск, но я никогда сам не сталкивался с этим. Не то, чтобы я выглядел много.)

...