您不可能总将所有关系数据放在一个关系数据库中。有时,数据过多,有时,部署架构分散(加利福尼亚州和印度之间的网络延迟可能导致单个数据库过于繁忙)。甚至可能是非技术原因(一位潜在客户除非其公司数据位于其自己的数据库实例中,否则绝不会达成交易)。无论出于何种原因,与多个关系数据库交互不可避免地会增加应用程序开发的复杂性。Hibernate Shards 框架旨在封装和最大程度地降低这种复杂性,方法是在 Hibernate Core 中增加对水平分区的支持。简而言之,我们的目标是通过 Hibernate 提供多个数据库的统一视图。
那么,分片是什么?好问题。“分片”只是“片段”或“分区”的另一种说法,但在 Google 内部使用该术语。Hibernate Shard 最初是一个小型 Google 工程师团队在20% 项目中完成的,因此该项目的术语从一开始就围绕分片展开。我们希望 Hibernate 社区能够尽快受益于我们的工作,因此我们公开了目前完成的内容,但同时也希望并期待该社区能够帮助我们比在保密情况下更快地发布 GA 版本。我们完全预计在我们的设计和实现中发现故障,并且感谢您的耐心,让我们共同解决这些故障。