在NoSql数据库(MongoDB)之上使用IMDG层(Gemfire, HazelCast)是否可以提高应用程序的性能和可扩展性?
也许吧。一如既往,"视情况而定"
什么?主要是数据的特征和数据访问模式。需要考虑的几个因素(很多!)可能是:
-
你有多少数据,它是可行的和/或成本效益,甚至尝试缓存它的一部分在内存中?
- 是否存在候选缓存的数据的"热"子集?例如,在社交应用中,最后x小时的数据驱动了几乎所有的负载。
-
您需要达到多少缓存命中率才能从缓存中获益?(这取决于你的应用对延迟的敏感性)
-
读/写之间的比率是多少?
-
一致性和可靠性要求是什么?
-
你的应用程序做什么类型的读取?复杂的查询吗?简单的会吗?哪种组合?
如果使用得当,缓存层可以非常有效。但它们不是灵丹妙药。不要指望在你现有的商店上贴上一个,就能神奇地"更快"或"更可扩展"……