我不确定我的问题是否完全清楚,所以让我潜入并给你一个很长的版本:
最近有人说,在讨论高容量Web应用程序时,“磁盘是新磁带”。网站管理员使用庞大的memcache服务器集群在客户端和服务器之间进行无磁盘I / O往返。为了实现这一点,应用程序开发人员必须将RDBMS视为通用数据存储,抛弃有价值的功能,如外键约束,检查约束以及级联更新和删除。
但是,如果你可以将你的memcache集群放在数据库接口的另一端,在应用软件领域(PHP,Ruby,Python ......)以及RDBMS内部呢?可以将其视为大型分布式内存数据库缓存。为了说清楚,我所说的是拥有可以将几乎整个数据库存储在内存中的memcache集群类型,从数据库读取时保证100%的缓存命中率,而不管SELECT语句的参数如何。然后,在编写应用程序代码时,您不仅可以忘记内存缓存,还可以开始像处理关系数据库管理系统一样处理数据存储,并按照RDBMS传统方式鼓励使用规范化和JOINS。
在保持/恢复RDBMS的数据完整性优势的同时,性能提升可能值得深入研究。
有没有人知道有人已经这样做的项目,也许作为一个开源项目,他们可能会修改开源RDBMS,如PostGRE或MySQL?我没有找到任何东西,我也不知道这些程序是如何构建的,或者是否有可能实现这样的存储引擎。
答案 0 :(得分:0)
您应该查看CAP理论:
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
请记住,如果其中一个memcache服务器重新启动,您会有点恼火。即使您使用了所有内存缓存服务器,您仍然会受到网络速度的限制,然后可能会出现网络拥塞问题。
还有其他设备,如fusionIO卡和其他纯RAM硬盘也可以解决这个问题,例如hypersystem的ram磁盘。 Ooohh喔,。我希望我的公司可以负担得起这些......
-daniel