hibernate shards源自google的一个工程师小团队的20%项目。它提供一个对数据库水平分割的解决方案。
hibernate shards
是对hibernate core进行了扩展,降低了复杂度。从概念上可以分成2部分。
1、基础逻辑
该部分对
• org.hibernate.Session
• org.hibernate.SessionFactory
• org.hibernate.Criteria
• org.hibernate.Query
进行了扩展。
• org.hibernate.shards.session.ShardedSession
• org.hibernate.shards.ShardedSessionFactory
• org.hibernate.shards.criteria.ShardedCriteria
• org.hibernate.shards.query.ShardedQuery
你可以很方便的使用就像普通的hibernate应用。
2、应用逻辑部分
提供三个接口,用来处理具体的实现策略
• org.hibernate.shards.strategy.selection.ShardSelectionStrategy
• org.hibernate.shards.strategy.resolution.ShardResolutionStrategy
• org.hibernate.shards.strategy.access.ShardAccessStrategy
ShardAccessStrategy:
获取数据的策略,目前已经包含的实现有:
SequentialShardAccessStrategy:顺序策略
ParallelShardAccessStrategy:并发策略
如果你想只取某一个库,目前你只能通过取具体的数据库的SessionFactory。目前在策略里还不支持取其中的某个或某几个库,暂时是所有
数据库都参与。
ShardSelectionStrategy:
当一个新数据保存时,决定存储到那个数据库。
ShardResolutionStrategy:
当数据修改后,判断同步到哪一个数据库。
分享到:
相关推荐
5. **故障转移和恢复**:当某个shard出现故障时,Hibernate Shards能够自动将请求重定向到其他可用的shard,保证系统的高可用性。 然而,Hibernate Shards也有其局限性。比如,它不支持跨shard的事务,这意味着某些...
例如,Java有Hibernate Shard、Ibatis Shard和HiveDB,Python则有Pyshards等工具。 总的来说,大规模网站架构设计是一个涉及多层面的复杂过程,包括选择合适的编程语言、设计符合业务需求的事务策略、优化数据库...
适用于任何基于Java的ORM框架,如Hibernate、Mybatis等 。 可基于任何第三方的数据库连接池,如DBCP、C3P0、 BoneCP、Druid等。 以jar包形式提供服务,无proxy代理层,无需额外部署,无其他依赖。 分片策略灵活,可...
3. **强大的扩展性**:Hibernate自身拥有丰富的功能,同时还有大量的第三方插件和工具可供选择,比如hibernate-validator用于数据校验,hibernate-search提供全文检索功能,以及hibernate-shard用于实现水平分表等。...
例如,Amoeba用于MySQL,PL/Proxy用于PostgreSQL,而Hibernate Shard、Ibatis Shard和Pyshards则是不同编程语言中的Sharding库。 总的来说,网站架构设计是一个复杂而深奥的领域,涉及到技术选型、系统设计、性能...
二是通过DAL API,如Java的Hibernate Shard、Ibatis Shard、HiveDB,Python的Pyshards等库,使得应用程序透明地使用分片和垂直分区的数据库。 总结来说,构建大规模Web网站架构需要综合考虑多种技术,包括但不限于...
二是通过DAL API,如Java的Hibernate Shard、Ibatis Shard、HiveDB,或者Python的Pyshards。这两种方式都可以实现对应用透明的数据库分区,提高系统的可扩展性和稳定性。 总的来说,大规模网站架构设计是一门综合了...
在Sharding的实现中,可以使用独立的DAL Proxy服务器(如MySQL的Amoeba,PostgreSQL的PL/Proxy)或者DAL API(如Java的Hibernate Shard,Ibatis Shard,HiveDB,Python的Pyshards)。这些工具可以帮助应用透明地处理...
二是提供DAL API,例如Java的Hibernate Shard、Ibatis Shard、HiveDB以及Python的Pyshards。这两种实现方式都能帮助应用透明地处理数据库的分区,从而提高系统的可扩展性和性能。 总的来说,大规模网站架构需要兼顾...
另一种是使用DAL API,如Java的Hibernate Shard、Ibatis Shard和HiveDB,或是Python的Pyshards。 总的来说,构建经典的大规模网站架构需要综合考虑多种因素,包括语言选择、事务处理策略、数据库优化和扩展性方案。...
这包括设置Stream、Shard、Producer和Consumer,以及使用KPL(Kinesis Producer Library)和KCL(Kinesis Client Library)进行数据处理。 2. **Jackson Java JSON库**:理解Jackson的核心功能,如`ObjectMapper`...
前者如MySQL的Amoeba和PostgreSQL的PL/Proxy,后者则有Java的Hibernate Shard、Ibatis Shard和HiveDB,以及Python的Pyshards等工具。 综上所述,规划大规模网站架构需要综合考虑多种因素,包括但不限于高可用性设计...