为了助力应用开发人员,Oracle NoSQL Database 为各种编程语言中的 API 和驱动程序提供了广泛的支持,例如 C、Java、Python、Node.js 和 REST API。下面将介绍 Java 中的 CRUD API。

 

api

Java 中的 CRUD 操作

开发人员可以使用产品应用中自带的 Java API 访问 Oracle NoSQL Database 中的数据。可以使用两种不同的编程范式或接口来编写 Oracle NoSQL Database 应用。
 

表 API

TabLAPI 是表接口与 Oracle NoSQL 存储之间的句柄。表是在键/值接口之上实现的独立层。虽然这两个接口兼容,但大多数应用只使用其中一个。请使用 getTableAPI() 创建 TabLAPI 实例。表接口需要使用辅助索引和支持的数据类型。

表与关系数据库中的表相似。它们被命名并包含一组强类型记录,称为行。Oracle NoSQL Database 表中的行类似于关系系统中的行,每行都有一个或多个命名的类型化数据值。可以将这些字段与关系数据库列类比。表有一个明确定义的主键,其中包含一个或多个有序字段。有关支持的数据类型、操作以及表 API 中的其他方法的更多信息,请阅读指南


键/值 API 

KVStore 是与远程运行的存储之间的句柄。要创建与存储的连接,请通过 KVStoreFactory.getStore () 请求 KVStury 实例。句柄包含线程、内存和与之相关的网络资源。因此,当使用 KVStore 完成应用时,需要调用 close() 方法来释放资源。

为了尽可能减少资源分配和取消分配开销,请避免重复创建和关闭同一个存储的句柄。例如,在每个 KVStore 操作周围创建和关闭句柄会产生大量资源分配开销,从而导致应用性能不佳。 

如果需要使用辅助索引,我们建议使用表 API,因为它未出现在键/值对 API 中。有关键/值 API 的更多详细信息,请参阅指南
 

批量操作

除提供单记录操作外,Oracle NoSQL 数据库也支持使用 execute 方法将一组操作捆绑在一起,从而跨主键路径相同的记录的多个更新提供事务语义。Oracle NoSQL Database 支持优化的批量获取操作,即传递主键列表来对所有匹配记录执行获取迭代操作。请参阅 API 文档


使用 RESTful API 的 CRUD

Oracle NoSQL Database 支持使用 Oracle REST Data Services 添加的 RESTful API。这允许将 Oracle NoSQL Database 表作为 REST API 端点公开。
可以使用 REST 创建、查询、更新和删除表中存储的数据。
 

Oracle REST Data Services 可对 NoSQL 数据和元数据进行操作,从而支持通过基于 HTTP 的 REST 服务来访问 Oracle NoSQL Database。
数据访问包括针对 NoSQL 表的创建、读取、更新和删除 (CRUD) 操作:
 

创建:HTTP POST 和 PUT 提供行数据创建服务。

读取:HTTP GET 通过指令来提供对行数据的键、部分键和字段范围查询,确保一致性和顺序。

更新:HTTP PUT 提供行数据更新服务。

删除:HTTP DELETE 提供行数据删除服务。

有关更多详细信息,请阅读指南。

 

JavaScript

现在支持 JavaScript 驱动程序(与 Node.js 0.10.26 兼容)。JavaScript 驱动程序需要使用代理服务器在 JavaScript 客户端与 Oracle NoSQL Database 存储之间转换网络活动。代理是用 Java 编写的,可以在 JavaScript 客户端代码和 Oracle NoSQL Database 存储可以通过网络访问的任何计算机上运行。但是,出于性能和安全原因,Oracle 建议在驱动程序所在的本地主机上运行代理,并且代理与驱动程序应当使用 1:1 配置(即,代理的每个实例应当只与单个驱动程序实例一同使用)。

请参阅指南,了解更多详细信息并获取连接至 kvstore、创建表和索引以及写入表行的示例。
可通过 npm 获取 Node.js 驱动程序。要获取 API 参考,请阅读此指南。
 

Python

现已提供 Python 支持。请参阅 Python 指南,了解更多详细信息并获取连接至 kvstore、创建表、索引以及执行更新和删除操作的示例。需要使用 Python 客户端模块 nosqldb.py 来访问 Oracle NoSQL Database 存储。可以从 Python Software Foundation 下载该模块。