1. Базы данных в памяти не помещаются на микроконтроллере.


Базы данных в оперативной памяти могут и подходят для микроконтроллеров в широком диапазоне областей применения, таких как промышленная автоматизация и транспорт. Системы баз данных в оперативной памяти могут быть довольно компактными (размер кода менее 500 КБ) и, как упоминается в ответе на миф № 3 ниже, весьма экономно используют доступную память. Микроконтроллер во встроенной системе часто не управляет большим количеством данных (и поэтому не требует много памяти), но данные по-прежнему несопоставимы и связаны, поэтому он выигрывает от технологии баз данных.

Для справки в приведенной ниже таблице показаны некоторые общедоступные оценки размера кода для нескольких различных систем баз данных в оперативной памяти. Имейте в виду, что размер кода зависит от целевого ЦП, компилятора и используемых оптимизаций компилятора.

Стол


2. Базы данных в оперативной памяти не масштабируются.

Существует два измерения масштабируемости: горизонтальное и вертикальное. Вертикальная масштабируемость означает использование более крупного сервера для обработки растущей базы данных. Хотя оперативная память, безусловно, дороже других носителей информации, нередко можно увидеть серверы с терабайтами памяти. Фактически, базы данных в оперативной памяти могут вертикально масштабироваться до терабайт.

Горизонтальная масштабируемость означает возможность сегментировать/разделять базу данных и распределять ее по нескольким серверам, при этом федерация по-прежнему рассматривается как единая логическая база данных. Это в равной степени относится к базам данных в памяти.

3. Базы данных в памяти могут потерять ваши данные (не являются постоянными).

При отсутствии каких-либо смягчающих факторов база данных в памяти «исчезает» при завершении процесса или перезагрузке системы. Однако это можно решить несколькими способами:

Понимание и использование аварийных остановок

5G означает, что платформы центров обработки данных должны развиваться
4. Базы данных в оперативной памяти аналогичны размещению базы данных на RAM-диске.

Ложь. Настоящая база данных в памяти оптимизирована именно для этого. Постоянная база данных оптимизирована для того, чтобы быть такой. Эти оптимизации диаметрально противоположны. База данных в памяти оптимизирована для минимизации циклов ЦП (в конце концов, вы используете базу данных в памяти, потому что вам нужна максимальная скорость) и для минимизации объема пространства, необходимого для хранения любого заданного объема данных. И наоборот, персистентная база данных будет использовать дополнительные циклы ЦП (например, за счет поддержки кэша) и пространство (за счет хранения индексированных данных в индексных структурах) для минимизации операций ввода-вывода, поскольку операции ввода-вывода являются самой медленной операцией.

5. Базы данных в оперативной памяти аналогичны 100% кэшированию обычной базы данных.

Тоже ложно. Кэширование 100% обычной базы данных улучшит производительность чтения (запроса), но ничего не сделает для повышения производительности вставки/обновления/удаления. Кроме того, поддержание кэша означает наличие дополнительной логики, необходимой постоянной базе данных для индекса наименее недавно использовавшегося (LRU) — индекса, чтобы знать, находится ли запрошенная страница в кэше или нет (СУБД не «знает», что вы кэшируете всю базу данных, она должна выполнять эту логику в любом случае), помечая страницы как «грязные» и так далее.

6. Базы данных в памяти подходят только для очень немногих и конкретных случаев использования.

Базы данных в оперативной памяти используются практически для любой рабочей нагрузки, которую вы только можете себе представить. Общие области применения включают бытовую электронику, промышленную автоматизацию, сетевое/телекоммуникационное инфраструктурное оборудование, финансовые технологии, автономные транспортные средства (земля/море/воздух), авионику и многое другое.

7. Базы данных в оперативной памяти более подвержены повреждению.

Базы данных в оперативной памяти не более подвержены повреждению, чем базы данных любого другого типа, а возможно, и в меньшей степени. Базы данных на постоянных носителях могут быть «записаны» мошенническими или злонамеренными процессами, что приведет к их повреждению. Операционные системы обеспечивают большую защиту памяти, чем файловые системы для файлов.

8. Если база данных в оперативной памяти переполнится, произойдет сбой.

Хорошо написанная база данных в памяти справится с нехваткой памяти так же изящно, как хорошо написанная постоянная база данных справится с переполнением диска. В идеале база данных в памяти не выделяет память динамически; скорее, память выделяется заранее, а память, необходимая для базы данных в памяти, распределяется из этого начального пула памяти по мере необходимости.

Такой подход исключает возможность выделения большего объема памяти, чем разрешено ограничениями пользователя/системы. Это также устраняет возможность утечки памяти, затрагивающую другие части системы, в которых работает база данных в памяти.

9. База данных в оперативной памяти может занимать всю системную память.

Хорошо написанная база данных не должна динамически выделять память для хранения (куча общего назначения может быть другой историей). Место для хранения (память) для базы данных в памяти должно быть выделено один раз при запуске. Если он переполняется, система базы данных в памяти должна сообщить об этом факте и позволить приложению определить следующие шаги (удаление некоторых данных, выделение дополнительной памяти, корректное завершение работы и т. д.).

10. Базы данных в оперативной памяти работают очень быстро, поэтому подходят для систем реального времени.

Системы реального времени делятся на два класса: мягкое реальное время и жесткое реальное время. Базы данных в памяти могут подойти для систем мягкого реального времени. Для систем жесткого реального времени требуется больше, чем просто скорость — им нужен детерминизм. Для этого, в свою очередь, требуется система базы данных, учитывающая время, т. е. такая, которая знает и может управлять ограничениями в реальном времени (крайними сроками). Также стало модным рекламировать базы данных в оперативной памяти как «реального времени», что стало синонимом «действительно быстрого», но не имеет никакого отношения к системам мягкого или жесткого реального времени.

11. Не имеет смысла иметь клиент-серверную базу данных в оперативной памяти.

База данных в памяти, которая сегментирована/разделена, практически требует архитектуры клиент/сервер. Следовательно, клиентские приложения могут быть изолированы от физической топологии распределенной системы, включая любые изменения в ней (например, для ее горизонтального масштабирования).