在上一篇文章中,我们已经讨论过spring框架和spring boot。在本文中,我们将了解Spring数据框架。
对Spring Data Framework的需求
我们的数字世界拥有超过20 ZB的数据,这与我们的物理宇宙中的恒星一样多。这些数据来自各种来源,例如银行,零售,电子商务,教育,建筑,社交网站等,并以结构化和非结构化两种形式(即)提供。创建,捕获,存储和管理这些数据的成本是该行业面临的最大挑战。市场上有许多软件和框架可以在某种程度上解决此问题。但是,这些框架仍然面临诸如以下问题的困扰:
- 在RDBMS中扩展写入是极其困难且不可能的。
- 垂直或水平缩放具有一定的局限性或昂贵的价格。
NoSQL数据已解决了这一问题,NoSQL数据是一种点解决方案,其思想是从ACID (原子性,一致性,隔离性和持久性)转换为BASE (基本可用,可扩展,最终一致)。 NoSQL是一个持续的趋势,是非关系数据库开发人员选择使用正确的工具完成正确工作的一种选择。除了NoSQL,我们还有大数据,它是指数据集,其大小超出了典型数据库软件工具捕获,存储,管理和分析数据的能力。在几乎每个行业中,大数据的范围从TB的10 TB到PB的多个PB。
因此,我们可以观察到数据访问格局已发生了很大变化。 RDBMS仍然很重要,但不能认为是“一刀切”的解决方案。我们还知道,Spring框架一直为RDBMS数据访问提供强大的支持,但是却缺乏处理其他类型的数据访问(NoSQL和BigData)的能力。因此,Spring Data项目的目标是使用各种数据技术(关系数据,非关系数据和大数据)刷新Spring数据支持,同时保留特定于商店的功能。
Spring数据框架:
Spring数据框架是父项目,其中包含许多子框架。所有这些子框架都处理特定于数据库的数据访问。该框架的设计目标是为所有数据访问技术(例如关系或非关系数据库,基于云的技术或map-reduce框架)提供一个基于Spring的熟悉且一致的模型。简而言之,Spring Data是一项旨在使Spring开发人员轻松访问新兴的NoSQL世界的计划。以下是Spring Data积极支持的技术范围。
- 关系型
- JPA扩展
- JDBC扩展
- 非关系
- 雷迪斯
- 蒙哥
- HBase的
- Neo4J
- 宝石火
- 露西娜
- 查询DSL
- 单独的开源项目,为执行查询提供类型安全。
- 大数据
- Hadoop的
- HDFS和M / R
- Hive
- 猪
- 级联
在此框架中,很少有流行的发布模块:
以下是Spring Data项目下的一些主要发行模块:
- Spring Data JDBC
- Spring Data JPA
- 春季数据共享区
- Spring Data REST
- 春季数据键值
- Spring Data MongoDB
- Spring Data LDAP
- Spring Data Redis
- Apache Cassandra的Spring数据
- Apache Solr的Spring数据
- Apache Geode的Spring数据
- Pivotal GemFire的春季数据
正在开发的模块:
当前,spring数据R2DBC模块正在开发中。该模块的功能是:
- 储存库支持。
- 通过模板进行资源分配和异常转换。
- SQL和NoSQL数据存储的对象/数据存储映射。
- 从存储库方法名称动态派生的查询。
- 透明的审核支持。
关键字和定义:以下是Spring Data框架中使用的一些关键术语及其定义。
- 存储库:通过类似于集合的接口访问数据映射层和域之间的域,以访问域对象。
- 创建将成为您的模型或实体的POJO。
- 扩展CRUD操作的存储库接口,并添加查询方法(finder方法)。
- 将Spring配置为扫描存储库接口并创建实现。
- 将实现注入到您的服务中。
- QueryDSL:启用对多个后端(包括MongoDB,Lucence,JPA,JDO,SQL和Java的纯集合)的查询的类型安全SQL的构造。
- NoSQL数据模型: NoSQL数据模型通常以键值对的形式表示,并且大多以JSON或图形形式记录。
- Redis:这是在键值存储上的持久缓存框架。它具有许多功能,并支持丰富的数据类型集(字符串,二进制,列表,集合,OrderedSet,HashMap等)。它可以获取内存的定期快照,并且可以将命令附加到日志文件。
- HBase:这是一个面向列的数据库。 Row指向键/值对的“列”。列可以分组为列族。
- MongoDB:这是一个开放源代码,可扩展,高性能,面向文档的JSON样式的数据库,其中文档按集合进行组织。它被认为是用于动态查询的丰富查询语言之一。它具有地理空间特征。
- 图形图形是一种通用的数据结构。数据上下文中的图形并不意味着图表,图表或矢量插图,而是具有特殊的含义,用于存储结构为图形的数据。
最后,我们可以得出结论,spring数据是一个伞形项目,其设计旨在统一和简化对各种数据库系统的访问。