我正在为我的应用程序选择数据库。我使用MySQL已经很久了,但由于我当前的应用程序性能和可伸缩性很重要,而且我知道MySQL有其局限性,我也听说过很多关于键值存储、基于列的DB和基于文档的DB等方面的信息。我调查了:
它们都似乎(或声称)比关系DB(如MySQL )更快。
我正在使用Rails,所有这些都有客户端,所以应该不会有问题。
我的数据模型在很大程度上是简单的,它以一个用户对象为中心(具有丰富的配置文件和首选项),这些对象涉及到不同的项目,如照片、视频、posts...etc,每一个都有一个或多个标签。
事实上,这些数据库是新的,似乎没有太多的资源为他们在线。另外,它们在结构上是不同的,所以以后从一种切换到另一种是不容易的。
我希望你能给我你的意见,你认为什么DB最适合我的应用程序,将有良好的性能和规模。谢谢,
Tam
发布于 2010-02-20 19:34:10
第一步)使用任何你最擅长的技术来创建你的设计。
第二步)释放你的社交网络,开始研究非关系数据库,并掌握你觉得最舒服的地方。
步骤3)重构您的数据层,以便您可以使用您新学到的DB技术快速、轻松地替换MySQL。
第4步)等待你的网站变得如此庞大,以至于需要替换MySQL,并开始堵塞漏洞。
我知道这听起来有点厚颜无耻,但我想说的是,当你的软件真正成为人们关注的问题时,你只需要发布你的软件,并开始担心它的规模等等。
发布于 2010-02-20 19:13:54
像文档数据库这样的东西(至少对于应用程序来说)的主要好处是,您可以将整个用户的信息视为一个单一的文档。您不必担心为属性或新特性添加表,而是可以将其大部分保存在用户文档中并动态更新它。
经常读书,很少写字,这是一种享受。
现在,您不需要一个“文档数据库”来做这样的事情。MySQL等人将很好地使用主键和CLOB (text) / BLOB字段来保存文档。
像CouchDB这样的东西(我在这个领域中最熟悉的)可以帮助的地方是,它支持很好的复制,并且很容易就文档的特定属性创建视图(例如,您想要所有的“create”成员,或者其他什么)。
此外,由于CouchDB是HTTP,所以它可以很好地处理现代缓存等可用的缓存,这可以帮助您进行扩展,特别是在读取大量操作时。
与实际工具相比,这更多地是关于整体架构的,所以请确保首先考虑这一点。
发布于 2010-02-20 19:29:09
还有一些大型站点使用的东京内阁。
我还没有使用过,但我的理解是,当像Twitter这样的站点需要非常快地转换大量消息时,RDBMS的开销就太大了,并且开始显著降低响应时间。
您需要做的是查看从RDBMS中获得的优势,并权衡它的速度,然后对nosql类型的数据库进行反向权衡。
RDBMS为您提供了一个标准,它为您提供了安全性、完整性和基于集合的通用语言,从而使数据操作更容易。然而,如果您不需要所有或任何这种结构,您就失去了速度。
在SQL之前是CODASYL和网络数据库。SQL是因为技术的可移植性和可转移性而爱上它的,但是我认为移动有线世界正在改变这一点,这是值得研究的。
https://stackoverflow.com/questions/2303193
复制相似问题