`
ohfanfan
  • 浏览: 52652 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

数据库sharding

阅读更多

现在 Sharding 相关的软件实现其实不少,基于数据库层、DAO 层、不同语言下也都不乏案例。限于篇幅,作一下简要的介绍。

MySQL Proxy + HSCALE

一套比较有潜力的方案。其中 MySQL Proxy (http://forge.mysql.com/wiki/MySQL_Proxy) 是用 Lua 脚本实现的,介于客户端与服务器端之间,扮演 Proxy 的角色,提供查询分析、失败接管、查询过滤、调整等功能。目前的 0.6 版本还做不到读、写分离。HSCALE 则是针对 MySQL Proxy 插件,也是用 Lua 实现的,对 Sharding 过程简化了许多。需要指出的是,MySQL Proxy 与 HSCALE 各自会带来一定的开销,但这个开销与集中式数据处理方式单条查询的开销还是要小的。


Hibernate Shards

这是 Google 技术团队贡献的项目(http://www.hibernate.org /414.html),该项目是在对 Google 财务系统数据 Sharding 过程中诞生的。因为是在框架层实现的,所以有其独特的特性:标准的 Hibernate 编程模型,会用 Hibernate 就能搞定,技术成本较低;相对弹性的 Sharding 策略以及支持虚拟 Shard 等。

Spock Proxy

这也是在实际需求中产生的一个开源项目。Spock(http://www.spock.com/)是一个人员查找的 Web 2.0 网站。通过对自己的单一 DB 进行有效 Sharding化 而产生了Spock Proxy(http://spockproxy.sourceforge.net/ ) 项目,Spock Proxy 算得上 MySQL Proxy 的一个分支,提供基于范围的 Sharding 机制。Spock 是基于 Rails 的,所以Spock Proxy 也是基于 Rails 构建,关注 RoR 的朋友不应错过这个项目。

HiveDB

上面介绍了 RoR 的实现,HiveDB (http://www.hivedb.org/)则是基于Java 的实现,另外,稍有不同的是,这个项目背后有商业公司支持。

PL/Proxy

前面几个都是针对 MySQL 的 Sharding 方案,PL/Proxy 则是针对 PostgreSQL 的,设计思想类似 Teradata 的 Hash 机制,数据存储对客户端是透明的,客户请求发送到 PL/Proxy 后,由这里分布式存储过程调用,统一分发。 PL/Proxy 的设计初衷就是在这一层充当"数据总线"的职责,所以,当数据吞吐量支撑不住的时候,只需要增加更多的 PL/Proxy 服务器即可。大名鼎鼎的 Skype 用的就是 PL/Proxy 的解决方案。

Pyshards

http://code.google.com/p/pyshards/wiki/Pyshards 这是个基于 Python的解决方案。该工具的设计目标还有个 Re-balancing 在里面,这倒是个比较激进的想法。目前只支持 MySQL 数据库。
结束语

Sharding 是一项仍处于高速发展中的"老"技术,随着 Web 2.0 的发展,Sahrding逐渐从比较"虚"的概念变成比较"实"的运用思路,开放源代码软件大潮也给 Sharding 注入新的活力,相信会有越来越多的项目采用 Sharding 技术,也会有更多成熟的 Sharding 方案和数据库附加软件涌现。

你的站点 Sharding 了么?

分享到:
评论
1 楼 lvye351 2013-06-06  
HiveDB  哪个商业公司在支持?没搜到。且github上看,几年没更新了

相关推荐

    数据库Sharding的基本思想和切分策略

    ### 数据库Sharding的基本思想和切分策略 #### 一、基本思想 **Sharding**,也称为数据库分片,是一种提高数据库性能和扩展性的技术手段。它的核心思想是将一个大型数据库分解成多个较小的部分(称为分片或shard)...

    数据库Sharding

    ### 数据库Sharding详解 #### 一、基本概念与重要性 **数据库Sharding**,又称数据库分片,是一种在大型、高并发的系统中优化数据库性能和扩展性的技术手段。其核心思想在于将单一数据库的数据分割并分布到多个...

    sharding-jdbc.zip

    1、创建数据库 首先我们创建相应的数据库 create database sharding_0; create database sharding_1; 这样我们就创建了两个数据库sharding_0和sharding_1; 脚本在项目里面

    轻量级当当数据库中间件Sharding-JDBC深度解析

    Sharding-JDBC是由当当网开源的一个分布式数据库解决方案,它在保持传统关系型数据库的基础上,通过分库分表、读写分离等技术手段,以保证数据库的可扩展性、高性能和高可用性。Sharding-JDBC的一个重要特性是它不...

    分布式数据库-MySQL Sharding1

    分布式数据库-MySQL Sharding1 分布式数据库-MySQL Sharding1 是一种将单个数据库拆分成多个数据库节点的技术,目的是为了解决单个数据库的性能瓶颈和存储空间限制。这种技术可以将数据分布到多个数据库节点上,以...

    十年数据库技术生态变革创新分析.pdf

    2. 数据库软件的进化:从单一的集中处理到分布式架构,数据库通过内存分区、进程拆分、数据表分区、读写分离、RAC集群到数据库Sharding,不断优化性能和可用性。 三、分片技术与分布式数据库 1. 数据分片:将大量...

    SpringBoot整合Sharding-JDBC,实现从数据库加载sharding-jdbc数据源,实现多种数据库数据源切换,数据库方言动态切换

    而Sharding-JDBC则是阿里巴巴开源的一个分布式数据库中间件,用于解决大数据量下的数据库扩展问题。本篇将详细介绍如何在SpringBoot项目中整合Sharding-JDBC,实现在运行时动态地从数据库加载数据源,以及实现数据库...

    sharding-jdbc,分布式数据库中间件.zip

    **分布式数据库中间件Sharding-JDBC详解** Sharding-JDBC是Apache ShardingSphere项目的一部分,它是一个开源的、轻量级的Java框架,能够在现有的Java应用中无缝集成,实现数据库的分布式处理。作为数据库中间件,...

    当当开源sharding-jdbc-轻量级数据库分库分表中间件

    ### 当当开源Sharding-JDBC:轻量级数据库分库分表中间件 #### 概述 当当网近期开源了一款名为Sharding-JDBC的轻量级数据库分库分表中间件。作为一款高性能、易用性高的数据库水平分片框架,Sharding-JDBC在设计上...

    数据库+分库分表+sharding-jdbc

    Sharding-JDBC是阿里巴巴开源的一款轻量级的Java框架,用于实现数据库的水平拆分,它是基于JDBC的中间件,可以在不修改业务代码的情况下,透明地实现数据分片和读写分离。 1. 数据库分库分表概念: 分库是指将一个...

    sharding-jdbc分布式数据库培训方案

    Sharding-JDBC 是一种流行的分布式数据库中间件,它旨在解决大数据量和高并发场景下的数据库性能瓶颈问题。 **分片** 是分布式数据库中的关键概念,主要是为了提升系统的横向扩展性。分片策略包括根据业务需求进行...

    Google云计算核心技术大揭秘.pdf

    数据库 Sharding 是一种分布式数据库技术,用于 horizontal partitioning 数据库,提高数据库的可扩展性和性能。 数据中心优化技术 数据中心优化技术是 Google 云计算核心技术中的一种重要技术,用于优化数据中心...

    杨廷琨 - 从分区到Sharding:数据库核心业务表的分区设计

    杨廷琨在"从分区到Sharding:数据库核心业务表的分区设计"这一主题中详细探讨了Oracle数据库在不同版本中分区技术的演进、Sharding技术的介绍、分区设计的最佳实践以及分区设计的新特性。接下来,我们将从这些方面...

    大规模网站架构.ppt

    数据库Sharding是另一种优化策略,分为水平分区和垂直分区。水平分区是将数据按某个字段值分散到多个数据库中,每个数据库包含所有列,但只负责一部分行;垂直分区则是按照列进行分割,将经常一起查询的列放在同一份...

    当当网 高洪涛 Sharding-JDBC PPT分享

    Sharding-JDBC定位为轻量级java框架,使用客户端直连数据库,以jar包形式提供服务,未使用中间层,无需额外部署,无其他依赖,DBA也无需改变原有的运维方式,可理解为增强版的JDBC驱动,旧代码迁移成本几乎为零。...

    sharding-proxy实现分表

    Sharding-Proxy 是一个数据库中间件,它扮演着数据库代理的角色,位于应用程序与真实数据库之间。其主要功能是实现数据分片逻辑,使得应用程序无需感知复杂的分片规则,即可透明地访问分片后的数据库。Sharding-...

    Sharding JDBC PPT 分享

    Sharding JDBC是一款开源的轻量级Java框架,它提供了一种分库分表的解决方案,用于解决大规模数据集下的数据库的性能问题。Sharding JDBC具有易于使用,无需额外依赖和强依赖数据库的特点。它允许开发人员对JDBC进行...

    shardingsphere 整合 达梦数据库 实现分表分库 (包含test demo)

    1、shardingsphere 并不直接支持达梦数据库,需要实现部分接口逻辑。 2、本demo并不完全支持达梦sql 3、包里面含有test demo可以直接测试 4、感谢shardingsphere 团队。 5、具体如何实现的 请查看我的博文 ...

    前端工程师-GoogleAppEngine前端技术架构解析.docx

    * 数据库 Sharding:一种分布式数据库技术,可以用来水平扩展数据库,以提高性能和可靠性。 1.4 数据中心优化技术 * 数据中心高温化:一种数据中心优化技术,可以用来降低数据中心的温升和能耗,提高数据中心的...

Global site tag (gtag.js) - Google Analytics