常用的数据库的数据模型模型_本地多模型数据库越来越受欢迎

常用的数据库的数据模型模型

在一个数据库核心中拥有多个数据模型可能听起来很奇怪:“不可能!”; “这不能很快!”; 或“我不需要这个。 我可以在应用程序中连接到多个数据库系统。” 这些是对我们的多模型数据库系统ArangoDB的一些最常见的响应。 但是,在过去一年左右的时间里,典型的React已经改变。 对于ArangoDB可能发生的事情,人们几乎没有怀疑。

如今,我们的本机多模型数据库(例如 G2CrowdGartnerGithub ) 越来越受欢迎 。 在本文中,我们将探讨组织探索这种新方法的一些原因。 首先,我们看一下什么是本地多模型数据库,什么是ArangoDB。 然后,我们看一下ArangoDB如何与Java集成。

顾名思义,多模型数据库通过一种技术为多个数据模型提供服务。 多模型数据库有两种基本类型:

分层方法

对于这种类型,将附加数据库安装到另一种存储技术上并通过API连接:例如,安装在键/值存储,关系数据库系统或列式存储之上的图形层。 通过各种查询语言可以访问不同的模型。

本机方法

通过这种较简单的方法,所有支持的数据模型都使用一个数据库核心和一种查询语言。

自2011年以来,ArangoDB团队一直致力于本机多模型方法,当时我们发现了一种将键/值,文档和图形模型组合到一个C ++核心中并允许使用声明性查询管理存储数据的方法。语言(即ArangoDB查询语言或AQL)。 我们决定根据Apache 2开源许可证发布此技术。 我们认为,这是提供对如此规模的项目的访问权限的最佳方法,并且易于采用。

我们的想法很简单:如果我们可以将一个以上的数据模型有效地组合为一种核心和一种查询语言,那么我们可以为开发人员提供有用的东西。 如果我们能够做到这一点,同时又能与家中草坪上领先的单一模型数据库竞争,那就更好了。 更少的数据存储库需要学习,管理和维护,从而从本质上降低了技术堆栈的复杂性。 另外,开发人员可以对数据执行更广泛的查询。

本地多模型并不是针对所有情况的最终解决方案。 我们的方法不是强迫开发人员使用所有数据模型。 我们也无法有效地集成所有模型。 关键在于使开发人员能够在其应用程序的不同方面利用不同模型的优势。 我们认为,在许多情况下,使用一种技术可以更有效地完成此操作。

还请参见: 2017年顶级数据库:SQL,NoSQL,大数据,快速数据的趋势

作为核心,ArangoDB是一个事务性文档存储,它存储JSON文档并支持类似于典型关系数据库系统的联接,聚合或排序操作。

如果仅将值存储在文档中,则它可以具有现代键/值存储的特征。 由于我们基于文档存储,因此与传统的键/值存储相比,ArangoDb每个JSON文件存储的数据更多。 这就是为什么我们建议将ArangoDB用于中小型键/值用例。 但是,如果您需要超大规模,我们建议您使用Redis之类的东西。

有趣的部分是图形。 图是高度连接的数据集,其关系由顶点和边表示。 在下面的可视示例中,图形连接由两个机场(即顶点)表示,它们通过一个航班(即边)相连。

您在这里看到的是ArangoDB的两个重要特征。 首先,为了创建图,唯一需要做的就是 在JSON文档中 存储其他 _from 和 _to 属性(请参见绿色和橙色文本)。

其次,顶点和边都是完整的,可嵌套的JSON文档,并且可以存储任意属性,创建合适的索引以及在复杂的过滤条件下执行查询。 通过对 _from 和 _to 属性 使用有效的哈希(即边缘索引) ,由于一致的哈希查找延迟,在ArangoDB中遍历图形可以非常快。

对于图部分,开发人员可以使用从遍历,最短路径和模式匹配开始的各种图算法。 开发人员还可以将SmartGraphs和分布式图形处理与Pregel一起用于大规模计算。

使用ArangoDB的本机方法,您可以在单个查询中组合不同的访问模式,例如联接,聚合,过滤和图形遍历。 我们的一些客户从使用一种模式开始 ,例如联接或图遍历。 随着时间的推移,他们中的大多数人都认识到 ,某些查询将更适合于另一种访问模式 。 但是,他们没有重写新的数据库到他们的应用程序中,而是简单地重写了一些查询以利用图或联接。 这种灵活性是本机多模型方法的主要优点之一,也是其近期流行的主要原因。

关于查询,ArangoDB还有另一个有用的方面,此功能有助于其被越来越多的采用。 Foxx框架 是一个基于Google V8引擎JavaScript框架。 它用于编写在ArangoDB内部运行的以数据为中心的RESTful微服务。 优点是它提供了统一的存储逻辑,减少了网络开销。 敏感数据永远不必离开数据库。 将数据密集型业务逻辑移近数据不仅可以提高性能,而且还可以将查询语言排除在应用程序层之外,并减少供应商锁定效应。

ArangoDB及其本地多模型方法显然值得尝试和考虑。 如果您想从今天开始,您可以阅读 有关多模型 概念的 白皮书,获取有关 如何探索这种新存储方法 的图表课程

还请参见: 快速数据和分析-SQL,NoSQL,IMDG,Hadoop,Spark。 接下来是什么? [视频]

如果您以前从未使用过像ArangoDB这样的非关系数据库,那么您可能会感到惊讶,大多数NoSQL数据库不提供与JDBC或JPA的集成,而是提供自己的Java API。 在大多数情况下,与关系数据库相比,NoSQL数据库提供了更广泛的功能集。 因此,标准化的JDBC或JPA将意味着对那些数据库的限制。

ArangoDB的Java API

ArangoDB提供了RESTful API,允许应用程序执行任何类型的数据库操作,从对复杂查询的简单CRUD操作到数据库管理(如创建数据库或集合),即NoSQL等同于SQL表。 像我们所有其他语言绑定一样,Java驱动程序也使用此REST API连接到ArangoDB。

Java的 API为ArangoDB,它支持Java 1.6+,还算齐全。 它支持同步和异步通信。 除了HTTP之外,驱动程序还支持称为 VelocyStream 的第二个网络协议 。 这是一个二进制传输协议,用于传输ArangoDB的内部存储格式 VelocyPack

让我们看一下如何使用Java API。 下面是一个示例:

// create driver instance
ArangoDB arangoDB = new ArangoDB.Builder().host("localhost", 8529).build();

// write your query
String query = "FOR t IN myCollection FILTER t.name == @name RETURN t";

// separate literal values as bind parameters from the query text
Map<String, Object> bindVars = new MapBuilder().put("name", "Homer").get();

// execute the query and define the result type
ArangoCursor<BaseDocument> cursor = arangoDB.db().query(query, bindVars, new AqlQueryOptions(), BaseDocument.class);

// process the results
cursor.forEach(doc ->{
  System.out.println("Key: " + doc.getKey());
});

如果您决定尝试ArangoDB,则可能需要观看 我们的10分钟Java教程 。 我们一直在寻求改进ArangoDB的Java驱动程序。 如果您有任何反馈,请告诉我们。 该 驱动程序 的 最新更新 包含ArangoDB社区要求的功能:我们现在支持内置的负载平衡以及扩展的故障转移。

在复杂的Java项目中,使用诸如Spring框架之类的框架非常方便,并且在某些情况下是必需的。 在过去的一年中,我们适应了这些项目,并开始帮助这些团队更好地将ArangoDB集成到他们的环境中。

Spring数据集成

Spring框架的一个有趣的模块是Spring Data。 它为数据访问提供了一个类似Spring的编程模型。 Spring Data有许多子项目,它们指定对不同数据库技术的数据访问。

虽然使ArangoDB成为本地查询语言的原因是它是一种专有语言。 我们的主要Struts之一是效率。 我们希望共享软件以帮助其他人创建更高效​​的应用程序。 为了消除这种效率的障碍, 我们发布了Spring Data集成 作为抽象层。 它减少了学习AQL的需要,并支持各种数据库操作。

许多社区成员直接在Java驱动程序中要求Jackson支持。 因此,我们的下一个项目将是对其进行扩展。 从3.2版开始,ArangoDB提供了新的API来管理Foxx服务。 驱动程序尚不支持此功能,但是我们认为这对于Java开发人员也将是有用的。

随着 3.3即将发布 ,ArangoDB将支持DC到DC复制。 它还将集成新的复制引擎以用于单实例使用,该引擎将支持“热备”。 明年,我们希望继续我们的旅程,获得大家的大量反馈,并可能集成第四个数据模型。 因此,请继续关注。

翻译自: https://jaxenter.com/arangodb-new-tools-for-java-139995.html

常用的数据库的数据模型模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值