使用分层数据结构对数据库进行分片
Posted
技术标签:
【中文标题】使用分层数据结构对数据库进行分片【英文标题】:sharding a database with hierarchical data structure 【发布时间】:2010-12-22 06:25:16 【问题描述】:我正在使用 mysql 来存储我的父子关系。数据在一个表中。
我没有任何问题查询;但是,该表的大小急剧增加。我想分片或使用一些技术来提高我的查询(和连接)的性能。我该怎么做?
【问题讨论】:
您的查询速度慢还是只需要执行大量查询?您是否以最佳方式使用索引(据您所知)? 假设数据库拆分可以基于语义字段。对于每个业务领域,该领域的选择很少。它很可能是客户的帐户 ID。 【参考方案1】:这篇文章中没有足够的信息来给你一个好的答案。 我们需要知道的第一件事是表结构是什么。 您是否定义了非聚集索引,或者它只是一个聚集索引。
您的应用程序使用了这个数据库,它对数据做了什么?
此外,您是在搜索名称字段还是特定日期?如果是这样,这些可能是索引类型的候选者。
要注意的第一件事是索引。
【讨论】:
【参考方案2】:最好使用专业的分片中间件,例如:Apache ShardingSphere
它可以使用简单的方式通过SQL路由对数据库和表进行分片和重写,而无需跨数据库连接。 它可以使用复杂的方式来处理联合跨数据库与联合查询 由 Apache Calcite 提供支持。
【讨论】:
【参考方案3】:我认为,如果您的产品变得如此庞大,您将需要更高级的帮助。 dbShards 是一个很好的起点。他们将帮助您为数据设计分片策略,并且可以轻松地对任何需要它的表进行分片。如果你的一个表变得太大,分片不是一个糟糕的选择。我会检查 dbShards。可能适用于这种情况。
【讨论】:
链接看起来像广告。它可能被放弃/出售了吗?以上是关于使用分层数据结构对数据库进行分片的主要内容,如果未能解决你的问题,请参考以下文章