Jay*_*ran 6 bigdata nosql amazon-dynamodb
我试图找出最适合Amazon dynamoDB的用例。
当我搜索大多数博客时,DyanmoDb将仅用于大量数据(BigData)。
我有关系数据库的背景。NoSQL DB对我来说是新的。因此,当我尝试将其与常规关系数据库知识联系起来时。
与DynamoDb相关的大多数概念是使用分区键/排序键创建无模式表。并尝试根据键查询它们。此外,没有这样的存储过程概念可以使查询更容易和简单。
如果我们管理如此庞大的数据,并且每次都执行如此复杂的查询来检索数据,那将是没有存储过程的正确方法吗?
注意:我可能对该概念有错误的理解。所以,请任何人在这里清除我的想法
预先感
谢杰伊
简而言之,像DynamoDB这样的系统旨在通过横向扩展而不是纵向扩展来支持大数据集(太大而无法容纳单个服务器)和高写入/读取吞吐量,这在历史上是关系数据库更常见的方法。
支持水平可伸缩性的主要方法是对数据进行分区,即,将数据集分为多个部分并分布在多个服务器之间。这样,它可能会使用更多的存储和更多的IOPS,从而允许更大的数据集和更高的读/写吞吐量。
但是,由于数据是分布在多个物理服务器之间的,因此数据分区使得难以支持诸如联接等的复杂查询。对于存储过程,出于相同的原因不支持它们-历史上存储过程背后的想法是数据局部性,即,它们在数据附近的服务器上运行而没有网络操作,但是,如果数据分布在多个服务器之间,则这种好处消失了(至少以存储过程的形式)。
因此,从此类系统中查询数据的最有效方法是通过记录键,因为数据分区基于键,并且很容易找出给定键的记录在物理上的位置。尽管许多此类系统还支持二级索引,但它们通常以某种方式受到限制或价格昂贵,并且可能不足以满足复杂软件解决方案中的要求。一种非常普遍的方法是拥有一个互补的索引/查询解决方案(我见过基于Elasticsearch和Solr的解决方案),该解决方案允许对某些记录片段运行复杂的查询以找出记录键,然后将其用于加载记录。