SQL Server 2014 的 In-Memory OLTP (Hekaton) 与Redis的概念是否相同或相似?
我使用 Redis 进行内存存储(存储在 RAM 中)和缓存,同时拥有一个单独的 SQL Server 数据库(就像 StackExchange 一样)。赫卡顿可以做同样的事情吗?
SQL Server 2014 的 In-Memory OLTP (Hekaton) 与Redis的概念是否相同或相似?
我使用 Redis 进行内存存储(存储在 RAM 中)和缓存,同时拥有一个单独的 SQL Server 数据库(就像 StackExchange 一样)。赫卡顿可以做同样的事情吗?
它们的相似之处在于它们都主要在内存中,但仅此而已。
Redis是一个内存键值数据库。如果配置它,它可以将数据保存到磁盘,但它将整个数据集保存在内存中,因此您需要足够的 RAM。键值架构允许各种不同的数据类型,因此您可以将值存储为简单的字符串或列表、集合、散列等。基本上,您可以在编程语言中使用的所有数据结构都可以在 Redis 中本地使用。
SQL Server Hekaton (In-Memory OLTP)是一个新引擎,旨在在内存中运行关系表。这些表的所有数据都保存在 RAM 中,但也存储在磁盘中,因此它们是完全耐用的。
Hekaton 可以获取 SQL Server 数据库中的单个表,并使用 MVCC(而不是页和锁)和其他优化在不同的进程中运行它们,因此操作速度比传统的基于磁盘的引擎快数千倍。对此进行了大量研究,主要用例是获取一个负载较重的表并将其切换为在内存中运行以提高性能和可扩展性。
Hekaton 并不是要在内存中运行整个数据库(尽管如果您真的愿意,也可以这样做),而是作为一种新引擎,旨在处理特定情况,同时保持界面不变。对最终用户而言,一切都与 SQL Server 的其余部分相同:您可以使用 SQL、存储过程、触发器、索引、具有 ACID 属性的原子操作,并且可以无缝地处理常规表和内存表中的数据。
由于 Hekaton 的性能潜力,如果您需要速度并希望在传统关系表中对数据进行建模,可以使用它来替换 Redis。如果您需要 Redis 的其他键值和数据结构功能,最好还是继续使用。
使用 SQL 2016 SP1 和更高版本,SQL Server 的所有层现在都可以访问相同的功能,唯一的区别是支持和容量的定价。
首先,您需要 SQL Server 的企业版(非常昂贵)才能使用 Hekaton(内存中 OLTP)。请注意,您必须为每个 CPU 支付 sql server 费用,向 SQL Server 添加更多工作负载可能需要您拥有更多 CPU,因此需要更多的许可证成本。
但与 Redis 不同的是,您可以让触发器或存储过程更新您的“内存缓存”作为数据库事务的一部分。您可能还会发现 Hekaton 的速度足够快,以至于您不需要主表中的单独缓存集。
所以是的,Hekaton 可以做与 Redis 相同的事情,但以这种方式使用它不太明智,除非它的使用不会花费你太多。
当 Hekaton 允许您处理更多数据而无需投资重新设计系统以使用 Redis 或其他方式的缓存时,Hekaton 就会发挥自己的作用。