2010-02-08 53 views
0

我不确定我的问题是否完全清楚,请让我直接介绍并给出长版本:有没有人为memcache创建过关系数据库风格的前端?

有人最近在讨论大容量Web应用程序时说,“磁盘是新磁带“。网站管理员使用大量的memcache服务器来实现客户端和服务器之间无磁盘I/O的往返。为了实现这一点,应用程序开发人员不得不将RDBMS的通用数据存储,像外键约束,检查约束以及级联UPDATES和DELETES这样的有价值功能抛出。

但是如果你可以将你的memcache集群放在应用软件(PHP,Ruby,Python ...)领域之外的db接口的另一端,并且在RDBMS中呢?把它看作是一个大型的,分布式的,内存中的数据库缓存。为了清楚起见,我正在讨论的是具有可以在内存中存储几乎整个数据库的memcache群集类型,无论您的SELECT语句的参数如何,在从数据库读取数据时都能保证100%的高速缓存命中率。然后,在编写应用程序代码时,不仅可以忘记内存缓存,还可以像处理关系数据库管理系统一样再次处理数据存储,并使用规范化和连接方式来实现RDBMS传统上的鼓励。

在保持/恢复RDBMS的数据完整性优势的同时,性能提升可能值得研究。

有没有人知道某个项目已经有人做过这个项目,可能作为一个开源项目,他们可能会修改开源RDBMS,如PostGRE或MySQL?我没有发现任何东西,我也不知道这些程序是如何构建的,或者是否有可能实现这样的存储引擎。

+0

为了让你的计划工作,你就需要一台服务器上运行的所有memcached实例(以避免网络问题,杀死你的计划),并且如果您有足够的内存将整个数据库放入一台机器的内存中,则只需将内存分配给数据库并让它执行最佳操作即可。 – Epcylon 2010-02-08 19:57:52

回答

0

,应先查看CAP theorom:

http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

请记住,如果重新启动这些内存缓存服务器中的一个,你会有点生气。即使你使用了所有的memcache服务器,你仍然会受到网络速度的限制,然后网络拥塞将成为一个问题。

还有其他设备,如fusionIO卡和其他纯粹的RAM硬盘也可以解决此问题,例如超系统的ram磁盘。 Ooohh喔,。我希望我的公司能买得起这些十几...

-daniel