何时使用dynamoDB -UseCases

时间:2017-11-30 16:48:09

标签: nosql bigdata amazon-dynamodb

我试图找出适合亚马逊dynamoDB的最佳用例。

当我搜索大部分博客时,DyanmoDb将仅用于大量数据(BigData)。

我有关系数据库的背景知识。 NoSQL DB对我来说是新的。所以当我试图将它与正常关系数据库知识联系起来时。

与DynamoDb相关的大多数概念是使用分区键/排序键创建无模式表。并尝试根据键查询它们。此外,没有这样的存储过程概念,使查询更容易和简单。

如果我们管理如此庞大的数据,每次执行此类复杂查询以检索数据将是没有存储过程的正确方法吗?

注意:我可能对这个概念有错误的理解。所以,请任何人清楚我的想法

提前致谢

1 个答案:

答案 0 :(得分:7)

简而言之,像DynamoDB这样的系统旨在通过水平扩展来支持大数据集(太大而不适合单个服务器)和高写/读吞吐量,而不是垂直扩展,这是关系数据库更常用的方法历史上。

支持水平可伸缩性的主要方法是对数据进行分区,即将数据集拆分为多个部分并分布在多个服务器之间。这样,它可以使用更多存储和更多IOPS,从而允许更大的数据集和更高的读/写吞吐量。

然而,数据分区使得难以支持复杂查询,例如连接等,因为数据分布在多个物理服务器之间。至于存储过程,它们由于同样的原因而不受支持 - 历史上存储过程背后的想法是数据局部性,即它们在没有网络操作的情况下在数据附近的服务器上运行,但是,如果数据分布在多个服务器之间,则这种好处消失(至少以存储过程的形式)。

因此,从这些系统查询数据的最有效方法是通过记录键,因为数据分区基于密钥,并且很容易确定记录在物理上对于给定密钥的位置。虽然许多此类系统也支持二级索引,但它们通常以某种方式受到限制或昂贵,并且可能不足以满足复杂软件解决方案中的要求。一种非常常见的方法是使用补充索引/查询解决方案(我见过基于Elasticsearch和Solr的解决方案),它允许在某些记录片段上运行复杂查询以找出记录密钥,然后用于加载记录