Подтвердить что ты не робот

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

Я просто подумал, что теперь уже достаточно иметь достаточное количество ОЗУ на вашем сервере базы данных для кэширования вашей полной базы данных, почему специалист в база данных памяти (например, TimesTen, см. также Wikipedia page), которые были всего лишь яростью несколько лет назад, которые больше не используются?

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

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

Это важно, потому что Stack База данных переполнения почти полностью в ОЗУ и соединения все еще слишком высокая стоимость.

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

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

  • Блокировка
  • Определение тупика
  • Ведение журнала транзакций
  • Восстановление
  • Etc

Очень сложно.

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

(Я вряд ли сам использую TimesTen, так как это дорого ($41,500.00/Процессор), и мне не нравится разговаривать с Oracle sales люди - я скорее трачу свое время на написание кода.)

См. также:

Update:

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

Ответ 7

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

SQLite

SQL Server Compact Edition

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

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

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

Ответ 8

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

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

Ответ 9

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

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

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

Считывание в памяти:

  • (Скорость): вашему приложению нужно обрабатывать данные/запросы быстрее, чем ваша база данных на базе диска.
  • (Сложность): вам необходимо сделать сложные транзакционные чтения и записи с помощью объединений и агрегаций и использовать возможности SQL.
  • (Масштабируемость): вам нужно масштабировать базу данных горизонтально без простоя.
  • (Поддержание работоспособности): вам нужна база данных для обеспечения высокой доступности, репликации, балансировки нагрузки и аварийного восстановления без добавления ваших обязанностей по обслуживанию.
  • (Предостережение): ваши данные должны соответствовать памяти (обычно в терабайтах).