没有合适的资源?快使用搜索试试~ 我知道了~
计算机-软件工程-外文翻译-外文文献-英文文献.doc
2 下载量 99 浏览量
2023-07-04
16:03:46
上传
评论
收藏 72KB DOC 举报
温馨提示
试读
14页
计算机-软件工程-外文翻译-外文文献-英文文献.doc
资源推荐
资源详情
资源评论
一、外文资料译文:
Java
开发
2.0
:使用
Hibernate Shards
进行切
分
横向扩展的关系数据库
Andrew Glover
,作者兼开发人员,
Beacon50
摘要:Sharding 并不适合所有网站,但它是一种能够满足大数据的需求方法。对于一些商
店来说,切分意味着可以保持一个受信任的 RDBMS,同时不牺牲数据可伸缩性和系统性
能。在 Java
开发
2.0 系列的这一部分中,您可以了解到切分何时起作用,以及何时不起
作用,然后开始着手对一个可以处理数 TB 数据的简单应用程序进行切分。
日期:
2010
年
8
月
31
日
级别:中级
PDF
格式:
A4
和信(
64KB
的
15
页)取得
Adobe®Reader®
软件
当关系数据库试图在一个单一表中存储数 TB 的数据时,总体性能通常会降低。索引
所有的数据读取,显然是很耗时的,而且其中有可能是写入,也可能是读出。因为 NoSQL
数据商店尤其适合存储大型数据,但是 NoSQL 是一种非关系数据库方法。对于倾向于使
用 ACID-ity 和实体结构关系数据库的开发人员及需要这种结构的项目来说,切分是一个
令人振奋的选方法。
切分
一个数据库分区的分支,不是在本机上的数据库技术,它发生在应用场面上。在
各种切分实现,Hibernate Shards 可能是 Java™ 技术世界中最流行的。这个漂亮的项目可
以让您使用映射至逻辑数据库的 POJO 对切分数据集进行几乎无缝操作。当你使用
Hibernate Shards 时,您不需要将你的 POJO 特别映射至切分。您可以像使用 Hibernate
方法对任何常见关系数据库进行映射时一样对其进行映射。Hibernate Shards 可以为您管理
低级别的切分任务。
迄今为止,在这个系列,我用一个比赛和参赛者类推关系的简单域表现出不同的数据
存储技术比喻为基础。这个月,我将使用这个熟悉的例子,介绍一个实际的切分策略,然
后在 Hibernate 实现它的碎片。请注意,切分首当其冲的工作是和 Hibernate 没有必然关系
的,事实上,对 Hibernate stards 编码部分是容易的。真正难的是搞清楚内容碎片和你的工
作方式。。
关于本系列
Java 的发展前景已经发生了根本变化,因为 Java 技术初现端倪。得益于成熟的开源
框架和可靠的租金部署基础设施,它现在的组装,测试,运行和维护 Java 应用开发的速度
和成本降低。在这个系列中,Andrew Glover 探讨了技术和工具,使这个新的 Java 开发有
尽可能多的典范。
切分简介
数据库切分是一种划分成一些小团体的逻辑数据,可以将一块表的分成不同的小组。
例如,如果您正在根据时间戳对一个名为 foo 的超大型表进行分区,2010 年 8 月之前的
所有数据都将进入分区 A,而之后的数据则全部进入分区 B。分区可以加快读写速度,因
为它们的目标是单独分区中的较小型数据集。
分区并不总是可用的(MySQL 并没有支持它,直到 5.1 版),而且与商业系统一起
做让它的成本可以让人望而却步。更何况,在同一物理机上实现最分区存储数据,所以你
仍然受到硬件基础的限制。分区也不能解决可靠性的或硬件不足。因此,聪明的人开始为
寻找各种新的方法。
切分基本上是在数据库级别的:而不是分裂的碎片的数据表的行,数据库本身是被分
割(通常是在不同的机器)的一些逻辑数据元素,而不是分裂成较小的块表,分割分片成
一个完整的数据库小切分基本上是在数据库级别的:而不是分裂的碎片的数据表的行,数
据库本身是被分割(通常是在不同的机器)的一些逻辑数据元素,块。
切分典型的例子是基于大型数据库存储划分各地区的全球客户数据:切分 A 用于存
储美国的客户信息,切分 B 用户存储亚洲的客户信息,切分 C 欧洲,等。这些切分分别
处于不同的计算机上,且每个切分将存储所有相关数据,如客户喜好或订购历史。
对分片(如分区)的好处是它压缩大数据:在每个单独的碎片表 ,它允许更快的读取
和写入,提高了性能。分片是也可以提高想象可靠性,因为即使一碎片意外失败,其他人
仍然能够满足数据。而由于分片是在应用层完成,你可以做的数据库在常规下不支持分割
它。资金成本也可能降低。
主键
切分利用多个数据库,所有这些都有自主意识的功能,不干涉其他切分。因此,如果
你依赖于数据库序列(如主键自动生成),很可能是相同的主键将显示在一个数据库上成
立。这是可能的,以协调跨分布式数据库序列,但这样做增加了系统的复杂性。最安全的
方式,禁止重复的主键是让你的应用程序(这将是一个 sharded 管理系统反正)生成密钥。
跨碎片查询
大部分(包括 Hibernate 碎片)分片的实现不允许跨碎片查询,这意味着你必须去额
外的长度,如果你想利用两对来自不同的碎片的数据集。(有趣的是,Amazon 的 SimpleDB
的还禁止跨域查询。)如果将美国客户信息存储在切分 1 中,还需要将所有相关数据存
储在此。如果您尝试将那些数据存储在切分 2 中,情况就会变得复杂,系统性能也可能
受影响。这种情况也与先前提出的观点 - 如果你有点最终需要做跨碎片连接,你最好的管
理方式,消除了重复的可能性管理键!显然,你需要充分考虑分片策略,然后再设置你的
数据库。一旦你已经选择了一种特定的方向,你就或多或少地依赖于它 - 它很难在走动后,
一直 sharded 数据。
避免过早分片
切分最好采用分片后期。像过早的优化,分片的基础上增长数据的预期可能是一个灾
难。分片实施的成功是基于一段时间内适当地了解数据增长的应用程序,并推断未来。一
旦你 sharded 您的数据可能会极其难以走动。
一个策略的例子
由于分片结合你到一个线性数据模型(即,你不能轻易加入不同碎片的数据),你应
该从你的数据清楚地了解每个组织碎片是将如何逻辑的。这通常是最容易由一个域的主节
点成为重点。在一个电子商务系统的情况下,主节点可以是一个命令或一个客户。因此,
如果你选择“客户”作为您的分片策略的基础,然后与客户的所有数据将被转移到各自的碎
片,但你还是要选择哪些碎片去移动这些数据。
对客户来说,你可以根据位置碎片(欧洲,亚洲,非洲等),或者你可以在别的东西
的碎片。这取决于你。您的碎片战略应当指出,纳入均匀分布的碎片之间的所有数据的一
剩余13页未读,继续阅读
资源评论
xinkai1688
- 粉丝: 322
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功