|
|
1
12
简而言之,像DynamoDB这样的系统旨在通过水平扩展来支持大数据集(太大,无法容纳单个服务器)和高写/读吞吐量,而不是垂直扩展,这在历史上是关系数据库更常见的方法。 支持水平可扩展性的主要方法是对数据进行分区,即将数据集拆分为多个部分并分布在多个服务器之间。这样一来,它可能会使用更多的存储和更高的IOPS,从而允许更大的数据集和更高的读/写吞吐量。 然而,由于数据分布在多个物理服务器之间,因此数据分区很难支持复杂的查询,例如连接等。至于存储过程,由于同样的原因,它们不受支持-从历史上看,存储过程背后的思想是数据局部性,即它们在数据附近的服务器上运行,而不需要网络操作,但是,如果数据分布在多个服务器上,这一好处就会消失(至少以存储过程的形式)。 因此,从此类系统中查询数据的最有效方法是通过记录键,因为数据分区基于键,并且很容易找出给定键的记录在物理上的位置。虽然许多这样的系统也支持二级索引,但它们通常在某种程度上受到限制或成本高昂,可能不足以满足复杂软件解决方案中的要求。一种非常常见的方法是有一个互补的索引/查询解决方案(我见过基于Elasticsearch和Solr的解决方案),它允许在一些记录片段上运行复杂的查询,以找出一个记录键,然后用于加载记录。 |
|
|
fewfew · 为什么在进行筛选时会得到空列表? 4 年前 |
|
|
kk651 · 首先创建表,然后将项放入刚刚创建的表中 4 年前 |
|
|
GavinF · Dynamo DB-查找每个主键的最新条目 4 年前 |
|
|
Hamza Ahmad · 从DynamoDB表中获取最新值 8 年前 |