Когда мне следует рассмотреть возможность использования базы данных в памяти и на какую проблему следует обратить внимание?

StackOverflow https://stackoverflow.com/questions/1593692

Вопрос

Я просто думал, что теперь это обычно на вашем сервере баз данных достаточно оперативной памяти для кэширования всей базы данных почему специалист в база данных памяти (например, Отсчет времени, смотрите также Страница в Википедии) которые были в моде несколько лет назад и больше не использовались?

Похоже, что с течением времени ни одна дисковая база данных не используется меньше, например, большинство приложений теперь построены на обычных базах данных rational.Я бы ожидал обратного, поскольку оперативная память становится все ближе к тому, чтобы быть бесплатной для многих серверов.

Я спрашиваю об этом, поскольку я только что прочитал об архитектуре переполнения стека, и на странице написано

Это важно, потому что база данных Stack Overflow почти полностью занята оперативной памятью, а соединения по-прежнему требуют слишком высоких затрат.

Но я не думаю, что это было бы проблемой, если бы вместо обычного btree использовались “указатели” и “коллекции”.Btree - очень умный способ обойти ограничения на скорость доступа к диску, например, они меняют использование процессора, чтобы уменьшить использование диска.Однако теперь у нас есть настолько подходящая оперативная память.

Но нам все еще нужна база данных, так как вы делаете свой собственный

  • Запирание
  • Обнаружение взаимоблокировки
  • Ведение журнала транзакций
  • Восстанавливающийся
  • И т.д.

Это очень тяжело.

@S.Лотт, учитывая, что мы все так долго выбираем индексы, избегаем объединений и исследуем проблемы с производительностью базы данных.Должен быть способ получше.Несколько лет назад нам сказали, что “базы данных в памяти” - лучший способ.Поэтому, прежде чем я перейду к использованию одного из них и т.д., я хотел бы знать, почему другие люди больше ими не пользуются.

(Сам я вряд ли буду использовать TimesTen, так как он стоит дорого (41 500,00 долларов США / Процессор) и мне не нравится разговаривать с продавцами Oracle - я предпочитаю тратить свое время на написание кода.)

Смотрите также:

Обновить:

Я задал этот вопрос а ДЛИННЫЙ некоторое время назад, в наши дни Microsoft SQL Server имеет "OLTP в памяти" это оптимизированный для памяти движок базы данных, интегрированный в движок SQL Server.Это недешево, но кажется очень быстро для некоторых рабочих нагрузок.

Это было полезно?

Решение

Скорее всего, просто не существует зрелых продуктов баз данных memory, которые можно было бы использовать в качестве полной замены классической базы данных.

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

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

Через десять или двадцать лет базы данных, вероятно, будут уже не такими, как сегодня.Если за базами данных в оперативной памяти будущее - сегодня этого никто не может сказать - им просто нужно еще немного времени для разработки.

Другие советы

Никто толком не ответил на вопрос "Когда мне следует рассмотреть возможность использования базы данных в памяти и на какие проблемы следует обратить внимание?", поэтому я попробую.

Вам следует рассмотреть возможность использования базы данных в памяти, если:1.В целевой системе есть данные для управления, но нет постоянного носителя 2.Требования к производительности просто не могут быть выполнены с помощью постоянной базы данных

Для № 1 подумайте о телегиде в вашей телевизионной приставке (STB).Низкобюджетный STB (т.е.те, у кого нет возможности видеорегистратора) не имеют постоянного хранилища и не нуждаются в постоянном хранилище.Но база данных для 400-канального 14-дневного телегида нетривиальна.Здесь также предъявляются требования к производительности, потому что данные поступают с карусели транспондера с высокой скоростью, и это тот случай, когда нужно "зафиксировать их или подождать, пока карусель снова не появится".Но нет необходимости в настойчивости.Мы все это видели;при отключении питания у вас дома, когда он снова включается, телегид сообщает "будет доступен в ближайшее время", потому что он обеспечивает себя с помощью транспондера или кабельной головки.Сетевые маршрутизаторы имеют одни и те же характеристики:нет постоянного хранилища, требуется скорость, и база данных может быть подготовлена из внешнего источника (в данном случае одноранговых маршрутизаторов в сети для повторного заполнения таблицы маршрутизации).

Есть бесконечные примеры #2:Целеуказание в режиме реального времени в военных системах, высокочастотных торговых системах и многом другом.

Что касается второй части вопроса, "проблема, на которую следует обратить внимание":Их очень много.

Убедитесь, что вы оцениваете настоящую базу данных в памяти, если вам нужна производительность, которую может обеспечить только база данных в памяти.Кэширование постоянной базы данных - это не одно и то же.Создание постоянной базы данных на оперативном диске - это не одно и то же.Использование базы данных в памяти, которая по своей сути ведет журнал транзакций (например, TimesTen), - это не одно и то же (даже если вы входите в /dev/null).

Убедитесь, что вы оцениваете систему баз данных, а не просто кэш (напримеркэш памяти).Система баз данных будет иметь поддержку транзакций со свойствами ACID, несколько вариантов индексации, поддержку параллельного доступа и многое другое.

О КИСЛОТЕ:системы баз данных в оперативной памяти не испытывают недостатка в "D" (долговечности).Это просто нужно воспринимать в контексте.Транзакции в постоянной базе данных долговечны только до тех пор, пока носитель, на котором они хранятся, долговечен.То же самое верно и для баз данных в памяти.В любом случае, если вы заботитесь о долговечности, вам лучше иметь резервную копию.

Тенденция, по-видимому, заключается в агрессивном кэшировании и использовании базы данных для заполнения кэша.Независимо от того, где находится база данных, объединения по-прежнему дороги, поэтому, по-видимому, предпочтительнее выполнить объединение один раз и кэшировать результат во что-то вроде Кэшированный в памяти или Скорость.

Все еще существуют базы данных в памяти, и они используются, но это зависит от контекста, в котором вы хотите их использовать. Базы данных SQLite например, часто используется в качестве базы данных в памяти при тестировании слоев данных.

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

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

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

Что ж, в базах данных в оперативной памяти обычно отсутствует D (долговечность) в КИСЛОТА (атомарность, последовательность, изолированность, долговечность) по самой их природе.В какой-то степени это можно преодолеть с помощью "гибридных" подходов, однако в какой-томомент что-то (либо сами данные, либо журнал транзакций) должно быть сохранено где - то чтобы обеспечить аспект долговечности.Обычно это может снизить производительность или привнести другие нежелательные свойства в решение для базы данных в памяти

Напротив, большинство современных СУБД имеют полный набор ACID, а также имеют за плечами многие десятилетия разработки.Это привело к созданию систем баз данных на базе дисков, которые отличаются высокой производительностью, особенно с учетом многолетних улучшений и оптимизаций, которые наблюдаются в современной системе RDBMS (ваша Бтри пример, являющийся лишь одним из многих).

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

По иронии судьбы, современные системы кэширования во многих отношениях медленно превращаются в нечто похожее на настоящую систему баз данных в оперативной памяти.Базы данных в оперативной памяти, как и объектно-ориентированные базы данных, в значительной степени являются "новичками в блоке", поэтому будет интересно посмотреть, куда все это приведет со временем.Oracle теперь приобрела TimesTen, и, согласно эта статья в Википедии, Microsoft рассматривает возможность выхода на рынок баз данных в оперативной памяти довольно скоро.Это два современных "крупных игрока" в области традиционных СУБД, которые серьезно относятся к системам баз данных в оперативной памяти.

Это тоже вариант: http://www.memsql.com/

Я не использовал его лично, но предполагается, что это что-то вроде встроенной замены MySQL в памяти.

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

Базы данных SQLite

Версия SQL Server Compact Edition

Это просто крупные игроки, могут быть и другие варианты, но крупные игроки справляются с минимальными требованиями при его выпуске..:)

а в базе данных memory у вас есть постоянное резервное копирование данных, если возникнут колебания или отключение питания, вы можете потерять всю связку.как и в других, которые будут обрабатываться как свои во вторичной памяти (HDD), и вероятность потери составит 10% по сравнению с базой данных памяти.

Я надеюсь, что это может помочь :)

Наиболее типичным вариантом использования базы данных является сохранение, что делает большинство баз данных в памяти непригодными.Одна из популярных причин использования базы данных в памяти - это цели тестирования.Но для этого требуется, чтобы вы использовали либо базу данных, которая может быть настроена как в памяти, либо что-то еще.

Популярными вариантами в этой области, по-видимому, являются RavenDB для .Net-разработчиков и OrientDB для разработчиков Java.Поскольку оба могут функционировать как базы данных в памяти и "что-то еще" в зависимости от конфигурации, поэтому вы можете использовать одно или другое в зависимости от вашей конфигурации (app.config в .Net, Maven или Ant settings в Java).

Потребности в обработке данных становятся все более сложными, и экосистема продукта развивается для удовлетворения этих новых потребностей.Дисковые СУБД, кэш-память в оперативной памяти и базы данных в оперативной памяти используются для удовлетворения различных потребностей.Вы должны выбрать то, что соответствует вашим потребностям -

Традиционные СУБД: Ваш кластер MySQL достаточно быстр, достаточно прост в обслуживании, и вам нравится надежность соответствия ACID.

Распределенный cahce в памяти: Вашему приложению необходимо выполнять быстрые операции чтения и записи, не слишком беспокоясь о согласованности или сложных транзакциях.

СУБД в оперативной памяти:

  1. (Скорость):Вашему приложению необходимо обрабатывать данные / запросы быстрее, чем это может сделать ваша дисковая база данных.
  2. (Сложность):Вам нужно выполнять сложные транзакционные операции чтения и записи с помощью объединений и агрегаций, и вам нравится использовать возможности SQL.
  3. (Масштабируемость):Вам необходимо масштабировать свою базу данных по горизонтали без простоев.
  4. (Ремонтопригодность):База данных нужна вам для обеспечения высокой доступности, репликации, балансировки нагрузки и аварийного восстановления без дополнительных затрат на обслуживание.
  5. (Предостережение):Ваши данные должны умещаться в памяти (обычно в терабайтах).
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top