[译]高性能Java持久化(1) - 前言

在企业级应用系统中, 一个好的数据访问层的设计会对整个系统的性能带来很大影响。根据Appdynamics¹的统计:

超过一半的的应用的性能瓶颈来自于数据库.

数据有很多种不同的格式(表行,索引节点),并且数据库记录会被多个并发用户读写。从并发角度而言,这是很具挑战性的任务。为了能强化数据访问层,数据访问逻辑必须与底层数据库很好地配合。


图1-1 数据访问技能栈

一个典型的RDBMS(关系型数据库管理系统)数据访问层掌握很多技术,最弱的技术会限制整个企业级解决方案。在进入更高级抽象层(比如ORM框架)前必须先精通底层技术。

1.1 数据库服务器与连通层

数据库手册不仅仅只是给数据库管理员用的。与数据库打交道但是却不知道它的原理,就跟无照驾驶是一样的。是否熟悉SQL标准和数据库特性是构建高性能应用的关键。
某些高效的特性因为不能再不同的数据库间通用,由于害怕数据库的一致性从而会避免使用这些技术。实际上,更常见的是维持使用一个低效的数据库层,而不是去使用一个新的数据库解决方案。
所有的数据访问都依赖于JDBC API去和数据库服务器通信。JDBC提供了很多性能优化技术,旨在降低事务响应时间、容纳更多的访问。
因此本书的第一部分将专注于JDBC,并且会讲到连接管理、Statement批量操作、Result结果集的读取和数据库事务的核心。

1.2 应用程序数据访问层

在企业级应用中有一些已经被证实有效的模式。Martin Fowler的《企业应用架构模式》是每一个企业应用开发者都应该阅读的。独立于对象关系映射模型,许多ORM框架都应用了很多模式,例如Unit of Work, Identity Map, Lazy Loading, Embedded
Value, Entity Inheritance or Optimistic and Pessimistic Locking。

1.2.1 ORM框架

ORM工具也可以加快应用开发速度,但是学习曲线毫无疑问是陡峭的。要掌握将关系型数据和领域模型连接的复杂的内在关系,唯一的办法就是在使用的过程中去了解它。
有时候即使说明文档都不一定够,为了解决一些性能相关的问题,不可避免地需要了解其源码。JPA擅于写数据是因为在持久化对象变化时所有DML语句会被自动执行。这样就可以加快迭代开发过程。
本书第二部分会介绍各种Hibernate特有的优化技术,例如id生成器、高效实体提取、状态转换、应用级事务和实体缓存。

1.2.2 原生查询构造器框架

JPA和Hibernate不是为了去取代SQL的。在一些应用中原生的SQL查询是不可避免的。JPA将普通的对象检索进行抽象,但是当某些读取和处理数据的时候,没有什么能比SQL更方便。
JPQL(Java Persistence Querying Language)将不同的数据库的查询规范进行了抽象,对上提供统一的API。因此它缺乏对某些特有功能的支持,例如Window Functions、Common Table Expressions、Derived tables和PIVOT。与JPA相反,jOOQ(Java Object Oriented Query)对数据库的特性支持非常好。它提供的类型安全的查询构造器可以防止应用遭受SQL注入攻击。
因此,本书第三部分会介绍使用jOOQ进行高级查询的技术。

关于数据库性能基准测试

本书中很多用于证明性能相对提升的基准测试。基准测试的结果通常依赖于底层硬件、操作系统或者数据库服务器配置、数据大小和并发模式。因此,性能的绝对值没有相对值重要。最相关的基准测试结果其实就是相对于实际生产系统的。
为了防止读者根据基准测试来比较两个不同的数据库从而得到一个错误的结论,书中会把数据库的名称模糊地记做DB_A,DB_B,DB_C和DB_D。
本书中所使用的所有示例的源码都在GitHub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容