我正在为我的应用程序选择数据库。我一直在使用MySQL的时间最长,但对于我目前的应用程序,性能和可伸缩性很重要,我知道MySQL有其局限性,我听过很多关于键值存储,基于列的DB和基于文档的DB等等。我调查过:
他们似乎(或声称)比MySQL之类的关系数据库更快 我正在使用Ruby on Rails,并且有上述所有客户端,因此它应该不是问题。
我的数据模型大部分都很简单,主要集中在与不同项目(如照片,视频,帖子等)相关的用户对象(具有丰富的个人资料和偏好),其中每个都有一个标签或更多。
这些数据库是新的这一事实似乎并没有为他们提供大量的在线资源。而且它们在结构上有所不同,所以稍后从一个切换到另一个也不是一件容易的事。
我希望您能就我认为最适合我的应用程序的DB提供您的意见,这些数据库将具有良好的性能和规模。 谢谢,
担
答案 0 :(得分:7)
步骤1)使用您最强大的技术创建您的设计。
步骤2)发布您的社交网络,开始研究非关系型数据库并掌握您认为最舒适的数据库。
步骤3)重构您的数据层,以便您可以使用新学习的数据库技术快速轻松地替换MySQL。
步骤4)等待您的网站变得如此之大,以至于需要更换MySQL并开始堵塞漏洞。
我知道这看起来有点厚颜无耻,但我的意思是发布你的软件并开始担心规模等,当它真正成为一个问题时。
答案 1 :(得分:0)
文档数据库(主要是针对您的应用程序)的主要好处是您可以将整个用户信息全局视为单个文档。您不必担心为属性或新功能或其他任何内容添加表,而是可以将其大部分保留在用户文档中并动态更新。
对于经常阅读,很少写,这是一种享受。
现在您不需要“文档数据库”来执行此类操作。 MySQL等人可以使用主键和CLOB(文本)/ BLOB字段来保存文档。
像CouchDB(我在这个领域最熟悉的那个)可以帮助的是它有很好的支持复制,并且可以直接创建文档特定属性的视图(例如,你想要所有“首映”成员,或其他什么)。
另外,由于CouchDB是HTTP,它适用于现代缓存以及可用的缓存,这可以帮助您进行扩展,尤其是再次读取繁重的操作。
这很多是关于整体架构而不是实际工具,因此请务必先考虑这一点。
答案 2 :(得分:0)
一些大型网站也使用Tokyo Cabinet。
我还没有使用过,但我的理解是,当像Twitter这样的网站需要非常快速地转换大量消息时,RDBMS的开销很大,并且开始显着减慢响应时间。
您需要做的是查看从RDBMS获得的优势,然后根据速度对其进行权衡,然后对nosql类型数据库进行反向操作。
RDBMS为您提供标准,它们为您提供安全性,完整性和基于集合的通用语言,使数据操作更容易。但是,如果你不需要全部或任何一种结构,你就会失去速度。
在SQL之前是CODASYL和网络数据库。由于便携性和技能的可转移性,SQL占了上风。但我认为移动有线世界正在改变这一点,值得研究。