Apache Gora:大数据的内存数据模型和持久性

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

ORM 框架在面向对象的开发人员想要与关系数据库交互时帮助他们。关系型数据库有很多优秀的ORM框架,比如Hibernate和Apache OpenJPA,其中有一些确实不错。

如今,大数据正在兴起,越来越多的人开发运行在大数据上的应用程序。已经有不同种类的 NoSQL 数据库来存储这种大小的数据,即列存储和文档存储。

尽管 ORM 框架解决了很多问题,甚至在关系数据库方面也有缺点,但 NoSQL 数据库的情况就不同了,因为它们没有一个共同的标准。

Apache Gora 旨在为用户提供易于使用的内存数据模型和具有数据存储特定映射的大数据框架的持久性。 Apache Gora 的总体目标是成为大数据的标准数据表示和持久性框架。

Gora 支持持久存储到列存储、键值存储、文档存储和 RDBMS,并通过广泛的 Apache Hadoop MapReduce 支持分析数据。

Gora 使用 Apache Avro 并依赖于特定于每个数据存储的映射文件。与其他 OTD(对象到数据存储)映射实现不同,在 Gora 中,数据 bean 到数据存储特定模式的映射是显式的。这样做的好处是,在使用 HBase 和 Cassandra 等数据模型时,您始终可以知道值是如何持久化的。

Apache Gora 路线图

数据持久化: 将对象持久化到列存储,例如HBase、Cassandra、Hypertable;键值存储,如 Voldermort、Redis 等; SQL数据库,如MySQL、HSQLDB、本地文件s中的平面文件 系统或 Hadoop HDFS。
数据访问: 一种易于使用的对Java 友好的通用API,用于访问数据,无论数据位于何处。
索引: 将对象持久化到Lucene 和Solr 索引,使用Gora API 访问/查询数据。
分析: 通过 Apache Pig、Apache Hive 和 Cascading 的适配器访问数据并进行分析
MapReduce 支持: 开箱即用且广泛的MapReduce (Apache Hadoop) 支持数据存储中的数据。

Apache Gora 和当前解决方案之间有什么区别?

• Gora 特别专注于NoSQL 数据存储,但对SQL 数据库的支持也有限。
• Gora 的主要用例是使用Hadoop 访问/分析大数据。
• Gora 使用Avro 进行bean 定义,而不是字节码增强或注释。
• 对象到数据存储的映射是后端特定的,因此可以利用完整的数据模型。
• Gora 很简单,因为它忽略了复杂的SQL 映射。
• Gora 将支持数据的持久化、索引和分析,使用 Pig、Lucene、Hive 等。

Apache Gora 支持的数据存储:

• 阿帕奇累积
• 阿帕奇卡桑德拉
• 亚马逊 DynamoDB
• 阿帕奇 HBase
• 阿帕奇索尔
• MongoDB

Apache Spark 是大数据开发人员的一个闪亮项目。 Spark 提供了一个更快、更通用的数据处理平台。与 Hadoop 相比,Spark 让您在内存中运行程序的速度提高 100 倍,在磁盘上运行速度提高 10 倍。目前,Gora 不支持 Spark,在我的 GSoC 期间;我正在 为 Apache Gora 实施 Spark 后端 来填补这一空白。