【发布时间】:2008-11-16 18:01:28
【问题描述】:
问题说明了一切。
示例:我打算对数据库表进行分片。该表包含标记为“活动”、“完成”和“已删除”的客户订单。我也有三个碎片,每个标志一个。
据我所知,在更改标志时,必须将一行移动到正确的分片。
我说的对吗? 最好的方法是什么? 可以使用触发器吗?
我考虑过不立即移动该行,而只是在一天/周/月结束时,但随后不确定,具有特定标志的行驻留在哪个分片中,并且必须始终完成搜索所有分片。
编辑:一些澄清:
一般来说,我必须选择一个标准来决定一行驻留在哪个分片中。在这种情况下,我希望它是上面描述的标志,因为这是对此类数据进行分片的最自然方式。 (在我看来)只有有限数量的活跃订单经常被访问。有大量完成的订单,很少被访问,有非常庞大的数据行几乎从不访问。
如果我想现在特定数据行所在的位置,我不必搜索所有分片。如果用户想要加载一个活动订单,我已经知道我必须查看哪个数据库。
现在,作为我的分片标准的标志发生了变化,我想知道处理这种情况的最佳方法。如果我只是将记录保留在其原始数据库中,最终所有数据都会累积在一个表中。
【问题讨论】:
-
如果我对问题的理解是正确的...如果您立即进行表分片,您岂不是只能从表分片中受益吗?
-
没有足够的字符来回答。 :) 在原始问题中添加了一些说明。
标签: database language-agnostic sharding