Я пытаюсь сравнить Mnesia с более традиционными базами данных.
Насколько я понимаю таблицы в Mnesia могут быть расположены к (см. Потребление памяти в Mnesia):
ram_copies
- таблицы хранятся в ets
, так никакая длительность как в ACID.disc_copies
- таблицы расположены к ets
и dets
, таким образом, таблица не может быть больше, чем доступная память? И если таблица фрагментируется, база данных не может быть больше, чем доступная память?disc_only_copies
- таблицы расположены dets
, так никакое кэширование в памяти и худшая производительность. И размер таблицы ограничен размером dets
или таблица должна быть фрагментирована.Таким образом, если я хочу выполнение выполнения чтений от RAM и длительности записей к диску, затем размер таблиц очень ограничен по сравнению с традиционным RDBMS как MySQL или PostgreSQL.
Я знаю, что Mnesia не предназначены для замены традиционного RDBMS:s, но он может использоваться в качестве большого RDBMS, или я должен искать другую базу данных?
Сервер, который я буду использовать, является VPS с ограниченным объемом памяти, приблизительно 512 МБ, но я хочу хорошую производительность базы данных.
disc_copies
и другие типы таблиц в Mnesia так ограничили, как я понял? Разве база данных не может быть частично на памяти и полной копии на диске?
Емкость хранилища базы данных Mnesia для различных типов таблиц обсуждалась в предыдущем вопросе SO:
Какова емкость хранилища базы данных Mnesia?
где уже есть отличный ответ.
Очевидно (но я думаю, вы уже видели это) официальный документ доступен по адресу:
http://www.erlang.org/doc/man/mnesia.html
Кроме того, чтение из Mnesia FAQ :
11.5 Сколько данных может храниться в Mnesia?
Dets использует 32-битные целые числа для смещения файлов , поэтому максимально возможная таблица мнезии (на данный момент) составляет 4 Гб.
На практике ваша машина замедлится до сканирования, прежде чем вы достигнете этого предела .
Наконец, таблицы Mnesia могут быть фрагментированы . Это обсуждается здесь и там .
Это мои 2р.