关于Oracle NoSQL数据库
Oracle NoSQL数据库是一个强大的解决方案,它结合了类似SQL的接口,用于处理NoSQL数据模型。这个数据库系统让开发者能够处理各种数据类型,而不会遇到阻抗不匹配问题,包括扁平的关系数据、分层的类型数据和无模式的JSON数据。当数据库与编程语言模型之间的差异导致数据处理挑战时,就会发生阻抗不匹配。然而,Oracle NoSQL通过提供跨多种数据结构的无缝体验来消除这一问题。
Oracle NoSQL数据库云服务简化了开发过程,让开发者能够专注于构建应用程序,而不是管理基础设施。它支持文档、固定模式和键值数据库模型,提供低延迟响应时间、活跃-活跃的区域复制和弹性可扩展性。该服务旨在轻松应对动态工作负载的扩展,提供以下特性:
- ACID 事务以确保数据完整性
- 无服务器扩展以灵活调整容量
- 安全性采用全面措施保护数据
- 按使用量计费,支持按需和预配容量模式
该云服务与本地Oracle NoSQL数据库完全兼容,允许开发人员在云和本地环境之间切换。
Oracle NoSQL的一个突出特点是其与SQL的兼容性,使开发人员能够在NoSQL环境中使用熟悉的查询语言。这是一个重要的优势,降低了通常与NoSQL数据库相关的学习曲线,这些数据库通常需要掌握专门的查询语言。使用Oracle NoSQL,开发人员可以在不放弃SQL强大查询能力的情况下,享受NoSQL数据库的灵活性。
Oracle NoSQL数据库云服务负责后端管理,适合需要轻松扩展并减少运营开销的开发人员。主要优势包括:
- 专注于应用开发:开发人员可以专注于构建功能,而不必担心管理服务器、存储或软件更新。
- 弹性扩展:数据库动态扩展以适应工作负载变化,确保在需求波动时性能保持一致。
- 预置资源:用户可以预先定义数据库的吞吐量和存储需求,系统会自动调整资源以满足这些需求。
NoSQL数据库使用表格数据模型,允许开发者在保持类似行和唯一键等熟悉结构的同时按需构建数据结构。这种灵活性扩展到支持单行事务和非事务性扫描,使其成为各种应用场景的多功能工具。
Oracle提供了三种版本的NoSQL数据库:
- 社区版(CE):该版本在Apache License 2.0下发布,非常适合寻求开源、社区支持解决方案的开发者。
- 企业版(EE):这个版本附带Oracle的商业支持,并在Oracle商业许可下授权。
- 基础版:这是一个更轻量级、更简单的版本,适用于寻找核心NoSQL功能但不需要企业级功能的开发者。
开发者工具和生态系统
Oracle提供了各种工具和SDK来增强开发者体验,包括:
- JetBrains插件:一个连接器,允许开发者在JetBrains IDE中直接与Oracle NoSQL交互。你可以在这里探索插件:Oracle NoSQL数据库连接器。
- 多语言SDK:Oracle提供了Java、Python、Node.js和.NET SDK。你可以在Oracle的GitHub页面上探索可用的SDK。
- Java SE 支持:在Java生态系统中工作的开发人员可以从Spring和Jakarta EE框架支持中受益,包括通过Eclipse JNoSQL与Jakarta NoSQL和Jakarta Data规范集成。
挑战
虽然Oracle NoSQL数据库提供了SQL兼容性的重要优势,但值得注意的是,它仍然在NoSQL范式内运行。这意味着即使开发人员可以使用类似SQL的查询,为了充分利用系统,仍然需要对NoSQL数据结构和原理有深入的了解。与传统关系数据库相比,灵活的模式、文档存储和键值操作等概念需要对数据建模和查询的方式进行转变。来自纯SQL环境的开发人员需要学习这些NoSQL概念,以优化他们的应用程序,并利用Oracle NoSQL提供的灵活性。
另一个考虑是围绕Oracle NoSQL不断发展的生态系统。尽管该平台迅速扩展并集成到流行的Java框架中,如Jakarta EE、Spring和其他开发工具,但与其他一些已经建立的NoSQL数据库相比,它仍然相对较新。因此,第三方工具、插件和社区驱动的资源的可用性仍在迎头赶上。尽管Oracle对平台的投入确保了持续的支持和增长,但可能还需要时间才能使生态系统达到其他NoSQL数据库的成熟水平。开发者应该意识到,在某些情况下,可能需要额外的自定义开发来填补工具或集成方面的空白,而这些在其他NoSQL系统中更容易获得。
开始使用Oracle NoSQL
要开始使用Oracle NoSQL,开发者可以选择使用Oracle Cloud提供的云解决方案,或者通过Docker在本地运行数据库。对于本地执行,以下Docker命令可以让你开始:
docker run -d --name oracle-instance -p 8080:8080 ghcr.io/oracle/nosql:latest-ce
这个命令在本地机器上设置一个Oracle NoSQL实例,使得在不需要设置复杂的基础设施的情况下,测试和开发应用程序变得简单。
Oracle NoSQL 无缝集成了 Jakarta Data 和 Eclipse JNoSQL 生态系统。以下是使用简单的 Beer
实体与 Oracle NoSQL 交互的 Java 应用程序示例:
@Entity
public class Beer {
@Id
private String id;
@Column
private String style;
@Column
private String hop;
@Column
private String malt;
@Column
private List<String> comments;
@Column
private List<Crew> crew;
@Column
private Map<String, Object> data;
}
仓库接口利用了 Oracle NoSQL 的专业化,提供了类似 SQL 的查询体验:
@Repository
public interface BeerRepository extends OracleNoSQLRepository<Beer, String> {
Set<Beer> findByStyle(String style);
@Query("select * from Beer")
Set<Beer> query();
@Find
@OrderBy("hop")
CursoredPage<Beer> style(@By("style") String style, PageRequest pageRequest);
@Query("From Beer where style = ?1")
List<Beer> jpql(String style);
}
运行此应用程序允许开发人员使用熟悉的 Java 构造与 Oracle NoSQL 交互,查询和持久化数据。
结论
Oracle NoSQL 数据库为构建需要高可用性、低延迟和处理多种数据模型的现代应用程序提供了灵活、可扩展的解决方案。具有 SQL 兼容性、托管云服务和广泛的开发工具等功能,Oracle NoSQL 为初学者和有经验的开发者提供了全面的开发环境。无论在云中还是本地部署,Oracle NoSQL 简化了开发过程,使开发者能够更专注于构建功能和更快地交付价值。
要获取有关与 Oracle NoSQL 工作的更详细指导,请访问 Oracle 的 GitHub 页面。
Source:
https://dzone.com/articles/oracle-nosql-database-developers-guide