1

我正在为我的应用程序选择数据库。我使用 MySQL 的时间最长,但对于我当前的应用程序来说,性能和可扩展性很重要,我知道 MySQL 有其局限性,我听说过很多关于键值存储、基于列的数据库和基于文档的数据库等. 我调查过:

  • 卡桑德拉
  • MongoDB
  • 雷迪斯
  • 沙发数据库

它们似乎(或声称)都比 MySQL 等关系数据库更快。
我正在使用 Ruby on Rails,并且上面有所有客户端,所以这应该不是问题。

我的数据模型大部分都很简单,它以与照片、视频、帖子等不同项目相关的用户对象(具有丰富的个人资料和偏好)为中心,每一个都有一个或多个标签。

事实上,这些数据库是新的,网上似乎没有很多资源可供他们使用。另外,它们在结构上有所不同,因此以后从一个切换到另一个并非易事。

我希望您可以就您认为最适合我的应用程序的具有良好性能和规模的数据库提供您的意见。谢谢,

4

3 回答 3

8

第 1 步)使用您最擅长的任何技术创建您的设计。

步骤 2) 释放你的社交网络,开始研究非关系数据库,掌握你觉得最舒服的那个。

步骤 3) 重构您的数据层,以便您可以使用新学习的数据库技术快速轻松地替换 MySQL。

第 4 步)等待您的网站变得如此之大,以至于需要更换 MySQL 并开始填补漏洞。

我知道这看起来有点厚颜无耻,但实际上我的意思是发布您的软件并开始担心规模等问题,当它真正成为一个问题时。

于 2010-02-20T19:34:10.433 回答
0

像文档数据库这样的东西的主要好处,至少对于您的应用程序而言,是您可以将整个用户信息组视为单个文档。您不必担心为属性、新功能或其他内容添加表格,而是可以将大部分内容保存在用户文档中并动态更新。

对于经常阅读,很少写作,这是一种享受。

现在您不需要“文档数据库”来执行此类操作。MySQL et al 可以使用主键和 CLOB (text) / BLOB 字段来保存文档。

像 CouchDB(我在这个领域中最熟悉的那个)这样的东西可以提供帮助的地方是它具有良好的复制支持,并且可以直接在文档的特定属性上创建视图(例如,您想要所有“首映”成员,或其他)。

另外,由于 CouchDB 是 HTTP,它可以很好地与现代缓存等可用,这可以帮助您进行扩展,尤其是在读取繁重的操作时。

其中很多与整体架构有关,而不是实际工具,因此请确保首先考虑这一点。

于 2010-02-20T19:13:54.967 回答
0

还有一些大型网站使用的东京内阁。

我还没有使用过,但我的理解是,当像 Twitter 这样的网站需要非常快速地处理大量消息时,RDBMS 的开销非常大,并且开始显着降低响应时间。

您需要做的是查看您从 RDBMS 获得的优势,并将其与速度进行权衡,然后对 nosql 类型的数据库执行相同的操作。

RDBMS 为您提供了一个标准,它们为您提供了安全性、完整性和基于集合的通用语言,以使数据操作更容易。但是,如果您不需要所有或任何该结构,那么您将失去速度。

SQL 之前是 CODASYL 和网络数据库。由于技能的可移植性和可转移性等原因,SQL 接管了。但我认为移动有线世界正在改变这一点,值得研究。

于 2010-02-20T19:29:09.210 回答