我想为我们的应用程序实现一个缓存系统,我们已经开始与 Memcached 集成。最近我开始听说 Hypertable,并看到了一些很棒的基准测试。
但是,我找不到两者之间的良好比较。
只是为了弄清楚:我知道 Hypertable 被认为更接近数据库而不是缓存。另一方面,它并不完全是一个 RDBMS——事实上,它完全不是一个 RDBMS。它有其自身的好处,但问题是它们是否值得付出性能成本(如果有的话)?
我想为我们的应用程序实现一个缓存系统,我们已经开始与 Memcached 集成。最近我开始听说 Hypertable,并看到了一些很棒的基准测试。
但是,我找不到两者之间的良好比较。
只是为了弄清楚:我知道 Hypertable 被认为更接近数据库而不是缓存。另一方面,它并不完全是一个 RDBMS——事实上,它完全不是一个 RDBMS。它有其自身的好处,但问题是它们是否值得付出性能成本(如果有的话)?
Hypertable是Google 的 BigTable中概念的一种实现。即面向列的数据库,它具有高度非规范化的特性,这意味着它不需要连接。
Memcached是一个内存缓存层,其作用类似于分布式哈希表,使您的应用程序不必访问实际的数据库。
两者都非常适合分布式并与MapReduce样式拓扑一起工作,但它们服务于不同的目的。Memcached/DHT 将用于加速对内存中数据的访问,而 HyperTable/BigTable 是在磁盘上永久存储数据的实际机制。
Memcached 用于通过将所有内容存储在内存 (RAM) 中来加快处理速度,例如 SQL 查询的结果,而无需进入数据库。
Hypertable(HBase、Cassandra、MongoDB 等)和其他是永久存储 NoSQL DB(从硬盘驱动器存储和检索的数据)。它们无法为您提供从 RAM 读取/写入 RAM(例如 memcached)的性能。所以这些没有相互比较。
一个更好的用例是使用 NoSQL DB 进行永久存储,并使用 memcached 作为 Web 应用程序和(NoSQL 或任何)DB 之间的前端快速访问缓存。