键值存储与RDBM与"云"数据库(SDB)的比较

Sha*_*han 6 cloud rdbms in-memory

在过去的几年中,我在MySQL空间设计了几个应用程序,然后不断改进性能和可扩展性方面,我感到很自在.我也有一些使用memcached的经验,可以在经常查询的结果集上提供应用程序端加速.最近我将Amazon SDB作为我电子商务实验的主要"数据库".

为了过度简化,我在脑海中使用SDB服务的快速理由是,使用无模式数据库结构可以让我专注于我的项目的逻辑问题,并在我的数据存储中快速累积内容.也就是说,不要担心事先设置和规范产品属性的所有可能排列; 只需开始加载产品,SDB就会记住所有可用的东西.

现在我已经设法完成了项目的前几次迭代,并且我需要为数据设置简单的接口,我正在运行我曾经认为与MySQL合作的问题.例如:在select语句中进行分组并限制语法以查询"items 50到100".我使用SDB的无架构体系结构获得的轻松优势,使用仅超过1800个项目查询/循环结果集而失去了性能.

现在我正在阅读像Tokyo Cabinet这样的项目,这些项目正在扩展内存中键值存储的概念,以极其快的速度提供伪关系功能(14x我在某处阅读).

我的问题:我作为应用程序设计人员/开发人员可以通过哪些基本指导或启发式方法来评估哪个数据库技术最适合我项目的每个阶段.

例如:在原型设计阶段,应用程序的逻辑/技术未知数使数据结构变得流畅:使用SDB.在用户可交付成为优先级的更成熟的阶段,使用传统工具,您不必花时间编写排序,分组或分页逻辑.

非常感谢使用这些工具的实际经验.

谢谢!

沙希布

Jon*_*ler 5

您发现的问题是RDBMS专家为什么会看到一些带有黄疸眼睛的替代系统.是的,替代系统可以非常快速地处理某些特定要求,但是一旦你想用相同的数据做其他事情,最快就会变得落后.相比之下,RDBMS通常以更大的沉着来管理变化; 它可能没有最快的微型优化处理的专业工作量那么快,但在被要求处理其他查询时很少会恶化.


Des*_*hou 4

新的解决方案并不是灵丹妙药。

与传统的 RDBMS 相比,这些系统通过权衡其他方面(查询能力降低、最终一致性、某些操作的糟糕性能)在某些方面(可扩展性、可用性或简单性)进行了改进。

不要将它们视为传统数据库的替代品,但它们是满足已知特定需求的专用工具。

以Amazon Simple DB为例,SDB基本上是一个巨大的电子表格,如果这就是您的数据的样子,那么它可能运行良好,并且卓越的可扩展性和简单性将为您节省大量时间和金钱。

如果您的系统需要非常结构化和复杂的查询,但您坚持使用这些很酷的新解决方案之一,那么您很快就会发现自己正在重新实现一个业余的、设计不良的 RDBMS,并存在其所有固有问题。

在这方面,如果您不知道这些是否适合您的需求,我认为在传统 RDBMS 中进行前几次迭代实际上更好,因为它们为您提供了最佳的灵活性和功能,特别是在单服务器部署和适度的情况下加载。(参见CAP 定理)。

一旦您更好地了解您的数据是什么样子以及如何使用它们,您就可以使用替代解决方案来满足您的需求。

如果您想要云托管解决方案的简单性,但需要关系数据库,您可以查看:Amazon Relational Database Service