SQL Server 2014 в памяти OLTP против Redis
Является ли In-Memory OLTP (Hekaton) в SQL Server 2014 такой же или похожей концепцией с Redis?
Я использую Redis для хранения в памяти (хранения в оперативной памяти) и кэширования, имея отдельную базу данных SQL Server (как это делает StackExchange). Может ли Гекатон сделать то же самое?
2 ответа
Они похожи, будучи в основном в памяти, но это все.
Redis - это база данных значений ключей в памяти. Он может сохранять данные на диске, если его сконфигурировать, но хранит весь набор данных в памяти, поэтому для этого вам нужно достаточно оперативной памяти. Архитектура ключ-значение допускает различные типы данных, поэтому вы можете сохранить значение в виде простой строки или списков, наборов, хэшей и т. Д. В основном все структуры данных, которые вы можете использовать внутри языка программирования, изначально доступны в Redis.
SQL Server Hekaton (In-Memory OLTP) - это новый механизм, предназначенный для запуска реляционных таблиц в памяти. Все данные для этих таблиц хранятся в оперативной памяти, но также хранятся на диске, поэтому они полностью надежны.
Hekaton может брать отдельные таблицы в базе данных SQL Server и запускать их в другом процессе, используя MVCC (вместо страниц и блокировок) и другие методы оптимизации, поэтому операции выполняются в тысячи раз быстрее, чем традиционный механизм на основе дисков. Было проведено много исследований, и основным вариантом использования было бы взять таблицу с большой нагрузкой и переключить ее на работу в оперативной памяти для увеличения производительности и масштабируемости.
Hekaton предназначался не для запуска всей базы данных в памяти (хотя вы можете сделать это, если вы действительно этого хотите), а в качестве нового механизма, предназначенного для обработки конкретных случаев при сохранении интерфейса неизменным. Все для конечного пользователя идентично остальному SQL Server: вы можете использовать SQL, хранимые процедуры, триггеры, индексы, элементарные операции со свойствами ACID, и вы можете легко работать с данными как в обычных таблицах, так и в таблицах в памяти.
Из-за потенциала производительности Hekaton вы можете использовать его для замены Redis, если вам нужна скорость и вы хотите моделировать данные в традиционных реляционных таблицах. Если вам нужны другие функции Redis со значением ключа и структурой данных, вам лучше остаться с этим.
В SQL 2016 с пакетом обновления 1 (SP1) и новее все уровни SQL Server теперь имеют доступ к одним и тем же функциям, и единственная разница заключается в цене на поддержку и емкость.
Во-первых, вам нужен корпоративный выпуск (оченьдорогой) SQL Server для использования Hekaton (In-Memory OLTP). Обратите внимание, что вы должны платить за сервер SQL для каждого ЦП, для увеличения рабочей нагрузки на сервер SQL может потребоваться больше ЦП и, следовательно, гораздо больше затрат на лицензию.
Но в отличие от Redis, вы можете иметь триггер или сохраненный процесс обновления вашего "в кеше памяти" как часть транзакции базы данных. Вы также можете обнаружить, что Hekaton достаточно быстр, и вам не нужен отдельный набор кэшей из ваших основных таблиц.
Так что да, Hekaton может делать то же самое, что и Redis, но вряд ли разумно будет использовать его таким образом, если только его использование не будет стоить вам дорого.
Hekaton имеет свои особенности, когда он позволяет обрабатывать гораздо больше данных без необходимости вкладывать средства в программные затраты, связанные с перепроектированием вашей системы для использования кэширования с Redis или другим способом.