**


前言

**
数据访问领域在过去的7年间发生了重要的变化。过去30年间一直占据企业级数据存储和处理核心位置的关系型数据库已经不能再独领风骚了。在过去的7年间诞生了很多可选的数据存储形式,当然也有的面临着消亡,它们被使用到了带有关键任务的企业级应用程序之中。这些新的数据存储形式是为了解决特定的数据访问问题而设计的,使用关系型数据库通常无法高效地解决这些问题。

将关系型数据库推到拐点的一个问题就是扩展性(scale)。试问,我们如何将几百甚至几千TB(terabyte)的数据存储到关系型数据库中?这个问题让我想到了一个笑话,病人说:“大夫,我一这样动就疼”而医生则说:“那就别这样动呗!”暂且把笑话放在一边,存储如此巨量数据的推动力是什么呢?在2001年,IDC报告说“人们创造和复制的数据将会超过1.8ZB(zettabytes),而且每隔两年就会翻番[1]”。新的数据涵盖各种类型,如媒体文件、日志文件、传感器数据(RFID、GPD、遥测设备……)、Twitter上的消息以及Facebook上的帖子。尽管对于企业来讲存储于关系型数据库中的数据依然非常重要,但是这些新型的数据并没有存储在关系型数据库之中。
很多的公司和科研实验室在大数据这个词流行起来之前就开始这样做了。当前的过程与以往的不同在于,智能的数据分析所带来的价值要高于硬件的成本。现在执行这种类型的分析不再需要购买4万美元一颗的CPU了;商用的硬件集群中每颗CPU的价格是1000美元。对于大型的数据集,存储区域网络(Storage Area Network,SAN)以及网络附属存储(Network Attached Storage,NAS)的价格较为昂贵:每GB(gigabyte)是1~10美元,如果复本构建到数据库中而不是硬件之中,那本地磁盘的成本每GB只有0.05美元。对于商用的硬件集群,使用本地磁盘的数据传输率也要比基于SAN或NAS的系统更高──对于相同价格的系统,前者能快500倍。在软件方面,新的数据访问技术大多数都是开源的。尽管开源并不意味着零成本,但是这显然会降低使用门槛,相对于传统的商业软件,它们能够降低采购的整体成本。
要摆脱ACID特性的主要驱动力在于,很多的应用程序提高了可扩展写(scaling write)的优先级,并且希望即便系统的某一部分失效,其他部分依然可以继续运作。尽管在关系型数据库中,可以通过在数据库之前使用内存缓存来实现可扩展读,但是进行可扩展写要困难得多。为了标识这类应用程序,通常将其命名为“BASE”系统,在这里缩写代表着基本可用(basically available)、可扩展性(scalable)、最终一致性(eventually consistent)。具有键/值数据模型的分布式数据网格并没有归类到这种新的NoSQL数据库之中。然而,它们提供了与NoSQL数据库类似的特性,如数据的可扩展性以及组合计算能力和数据的分布式计算功能。

从上面简短的介绍中,你能够了解到数据访问的现状,目前正在发生的是一场革命,关注数据的人会非常兴奋。关系型数据库并没有消亡,在很多企业的运作中它依然是核心,并且会持续很长的时间。但是,趋势很明显:新的数据访问技术解决了关系型数据库所无法解决的问题,因此作为开发人员,我们必须要扩充自己的技能,要能够处理这两种技术。

Spring框架长期以来都致力于简化Java应用程序的开发,尤其是使用Java数据库连接(Java Database Connectivity,JDBC)或对象关系映射器编写基于RDBMS的数据访问层方面。在本书中,我们力图帮助开发人员使用这些新技术高效地编写Java应用程序。Spring Data项目直接处理这些新的技术,因此你能够将已有的Spring知识延伸到它们之中,或者通过使用Spring Data,也能够更深入地学习Spring。不过,我们也没有抛弃关系型数据库。Spring Data为了Spring能支持RDBMS扩展了新功能。
本书希望为你提供实用的Spring Data项目的介绍,该项目的目的在于帮助Java开发人员使用最新的数据处理和管理工具,同时能够以最新的方式使用传统的数据库。我们首先会为你介绍这个项目,阐述SpringSource以及该团队背后的驱动力,并描述了示例工程的领域模型,这个例子将会在后面的章节中使用,此外还介绍了如何获取和搭建示例代码(第1章)。

接着将会讨论Spring Data Repository的基本理念,因为它们是后续各种数据存储中都会涉及的通用主题(第2章)。对于Querydsl也是如此,我们将会在第3章中讨论这个话题。这两章为探讨特定存储与Repository的集成以及高级查询功能奠定了坚实的基础。

为了从Java开发人员熟悉的领域开始,我们会用一些时间来介绍传统的持久化技术,如JPA(第4章)和JDBC(第5章)。这两章阐述了在Spring已有的对JPA和JDBC的支持之上,Spring Data的模块提供了什么新特性。

在完成这些之后,将会引入Spring Data项目所支持的NoSQL存储:以MongoDB为例介绍文档数据库(第6章),以Neo4j为例讲解图数据库(第7章),以Redis为例讲解键/值存储(第8章)。列族数据库HBase将会在稍后的章节中介绍(第12章)。这些章节中涵盖的内容包括了将领域类映射到特定存储的数据结构、通过所提供的应用程序编程接口(Application Programming Interface,API)与存储进行便捷地交互以及对Repository抽象的使用。

目录

**[第一部分 背景知识
第1章 Spring Data项目
1.1 为Spring开发人员提供的NoSQL数据访问功能](https://yq.aliyun.com/articles/91697)**
1.2 主题概述
1.3 领域
1.4 示例代码
1.4.1 将源码导入到IDE
**[第2章 Repository:便利的数据访问层
2.1 快速入门](https://yq.aliyun.com/articles/91744)**
2.2 定义查询方法
2.2.1 查找查询的策略
2.2.2 衍生查询
2.2.3 分页和排序
2.3 定义Repository
2.3.1 调整Repository接口
2.3.2 手动实现Repository方法
2.4 IDE集成
2.4.1 Intelli IDEA

《Spring Data实战》——导读相关推荐

  1. 《应用时间序列分析:R软件陪同》——1.5 习题

    本节书摘来自华章计算机<应用时间序列分析:R软件陪同>一书中的第1章,第1.5节,作者:吴喜之,刘苗著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.5 ...

  2. 《应用时间序列分析:R软件陪同》——2.3 随机游走

    本节书摘来自华章计算机<应用时间序列分析:R软件陪同>一书中的第2章,第2.3节,作者:吴喜之,刘苗著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看.

  3. 《应用时间序列分析:R软件陪同》——导读

    ** 前言 ** 首先,一些教材偏重于数学理论和推导.作者多为数学出身,他们习惯于数学的严格性和导出精确而又漂亮的数学结论.这些书适用于那些愿意为时间序列的数学理论研究做出贡献的读者. 其次,国内教材 ...

  4. arima模型_时间序列分析(R)‖ARIMA模型预测实例

    背景 十九大报告,对教育方面做出了详细说明.近年来,随着研究生招生规模的逐渐扩大,报名参加硕士研究生考试的人数也逐年增加.大多数关于研究生的文章是以研究生的现状.研究生的教育.研究生的就业等方面为主题 ...

  5. R语言入门(1)时间序列分析

    时间序列分析 使用软件为Rstudio,参考CRAN中时间序列分析分析函数和package,拿手上的数据练习一下时间序列分析. 1.原始数据说明 选择连续9天的数据,共2025条,时间间隔为5分钟.具 ...

  6. r软件时间序列分析论文_高度比较的时间序列分析-一篇论文评论

    r软件时间序列分析论文 数据科学 , 机器学习 (Data Science, Machine Learning) In machine learning with time series, using ...

  7. 时间序列分析及应用r语言pdf_R语言:时间序列经典分析法(二)

    题记:本文是个人的读书笔记,仅用于学习交流使用.本文将深入研究时间序列技术. 01 解决什么问题? 前面一章,介绍了时间序列中涉及到的基本概念,本章将在此基础上介绍如何对时间序列的资料进行分析,怎么选 ...

  8. 使用R语言对股票数据进行时间序列分析

    tushareID:469251 R语言相对于python在做统计分析是十分方便的软件,时间序列分析在数理统计理论方面很有支撑,解释性也很强,理论已经很成熟,不了解的小伙伴可以去搜下相关课程. 这里记 ...

  9. R语言mgcv包时间序列分析在空气污染与健康领域的应用(3)---模型自由度选择

    广 义 相 加 模 型 ( generalized additional model,GAM)是对传统广义线性模型的非参数拓展,可有效处理解释变量与效应变量间复杂的非线性关系.GAM 目前已广泛应用于 ...

  10. R语言mgcv包时间序列分析在空气污染与健康领域的应用(1)

    在空气污染与健康研究领域,经常需要用时间序列方法将随时间变化的污染物暴露资料和随时间变化的事件发生数资料联系起来,分析人群健康结局与暴露水平之间的关系. 时间序列分析是根据系统观测得到的时间序列数据, ...

最新文章

  1. 从0到25万人,阿里巴巴是如何面试的?(附模板)
  2. java基础----数据结构与算法----Java API:集合 以及 排序相关API
  3. 一个页面多个swiper问题解决
  4. 西部开源学习笔记BOOK2-《unit 4》
  5. 413 Request Entity Too Large 的解决方法
  6. 关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解
  7. tomcat容器启动
  8. linux进程sleep硬盘,linux下线程调用sleep,进程挂起
  9. oracle可以只装客户端吗,我想在linux下只装oracle客户端行吗?怎么装?
  10. android实现半透明属性,Activity透明/半透明效果的设置transparent(两种实现方法)
  11. 【读书笔记】python3 网络爬虫开发实战(1)
  12. 案例分享:智邦科技上海办公室WLAN改造项目
  13. Pytorch构建Transformer实现英文翻译
  14. Windows Server 2016-增强IPAM
  15. matplotlib官方中文手册pdf下载
  16. CocoaLumberjack的ios应用开发使用指南
  17. 057.(2.26)遇到人生低谷期该怎么度过?
  18. 桌面应用程序的版本更新,升级
  19. 深圳和上海It行业比较 广纳建议
  20. 【c语言版】带你领悟多子棋游戏

热门文章

  1. .bash_profile .bashrc profile 文件的作用的执行顺序
  2. liger UI tree DATA添加值
  3. etcd3 安装与运维
  4. [性能优化]UITableView性能优化的一点感悟及计算UILabel高度的新方法 1
  5. debian6 snmpd 安装配置
  6. angular2之pdf文件操作大全
  7. 2017杭州云栖大会FAQ(持续更新中)
  8. 好的安排小明(南阳19)(DFS)
  9. 控制edittext光标位置
  10. 【转】计算机科学中最重要的32个算法