【问题标题】:Sharding and indexes分片和索引
【发布时间】:2012-05-28 23:19:38
【问题描述】:

我想对我的数据库进行分片,但我在这个主题上并不专业。所以这是我的考虑。尽管分片键是将请求定向到正确节点的出色索引,但是将在我的表上定义的其余索引呢?我希望引用这些索引的请求也被传递到正确的节点,以便只有一个节点处理请求。据我了解,为此必须存在一些集中式索引节点。所以我的问题是这个功能是否已经存在于像 MYSQL 这样的 RDBMS 中,还是我应该使用其他特殊产品。

【问题讨论】:

    标签: mysql indexing sharding


    【解决方案1】:

    免责声明:我为 ScaleBase 工作,我每天都在生活和呼吸碎片......

    我在这里建议,例如,如果您根据 A 列进行分片,则 columnA=xx 的 WHERE 将转到单个分片。 WHERE columnB=xx 必须去所有分片,因为所有分片中可能都有 columnB=xx。除非列 A 和列 B 相关。然后你真的需要将关系保存在映射表中。 我可以说在所有数据库上运行可以超快,您需要并行运行并合并结果。在 ScaleBase 我们支持合并 ORDER BY、GROUP BY 等。这并不容易......

    嘿,在我的博客中查看更多信息:http://database-scalability.blogspot.com

    【讨论】:

    • 是的,这是我不明白的。如果您有单独的节点专用于数据库索引(记录物理位置 + 机器 ID),您可以使每个引用 B 列的查询仅转到数据实际所在的那些机器!这更快!
    【解决方案2】:

    Andrey,您所描述的正是 Clustrix 数据库的工作原理,其中数据和索引是自动分布的,然后查询是跨节点分布的。 Clustrix "brings the query to the data" 并具有无共享架构(因此不需要集中索引)。 MySQL 没有任何内置的分布式计算功能,虽然有各种附加选项,但当达到集中式资源限制时,它们最终会遇到扩展限制。

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 2018-04-10
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 2018-09-03
      • 2016-07-28
      • 2015-08-21
      相关资源
      最近更新 更多