Carbonado是Java应用程序的可扩展的高性能持久抽象层,为潜在的持久技术提供了关系视图。可以通过JDBC可访问的SQL关系数据库提供持久性,也可以是伯克利DB。也可以在两者之间完全复制。
即使Backing Database不是基于SQL的,Carbonado仍然支持任何类型的关系数据库中发现的许多核心功能。它支持查询,联接,索引,并执行查询优化。当以这种方式使用时,Carbonado不仅是关系数据库的层,而且是关系数据库。 SQL不是实施关系数据库的要求。
在Carbonado中定义新类型涉及创建遵循Java Bean惯例的接口或抽象类。通过插入特殊注释来指定其他信息。至少需要注释来指定主键。注释是Java 5中首先可用的功能,因此,Carbonado取决于Java 5。
从表面上看,看来Carbonado类型的定义是像Pojos一样定义的。不同之处在于,在Carbonado中,类型是关系的对象表示。它不是对象数据库,也不是对象关联桥。此外,数据类型的定义只是接口,并且没有外部配置文件。所有实现类型的代码都是自动生成的,但是没有额外的构建时间步骤。
Carbonado在访问实际存储时会施加非常低的开销来实现高性能。低开销是通过Cojen库自动生成绩效关键代码的部分来实现的。
Carbonado 1.2添加了许多新功能,在此处和发行说明中总结了这些功能。
一般功能
存储库
JDBC功能
查询引擎功能
Carbonado分为几个包装捆绑包,以更好地依赖性管理。开始使用Carbonado的最简单方法是使用Berkeley DB JE支持的存储库。为此,您需要获取Carbonado和Carbonadosleepycatje套件捆绑包。
Carbonado Core Carbonado代码,取决于Apache Commons Logging,Joda Time和Cojen。
Carbonadosleepycatje包含用于支持SleepyCat/Oracle的存储库,伯克利DB Java版。伯克利DB JE代码必须单独下载和安装。
Carbonadosleepycatdb包含用于支持SleepyCat/Oracle Berkeley DB的存储库。伯克利DB代码必须单独下载和安装。
从Carbonado术语到SQL术语的宽松映射:
Carbonado | SQL |
---|---|
存储库 | 数据库 |
贮存 | 桌子 |
可保持定义 | 表定义 |
存储实例 | 表行 |
财产 | 柱子 |
询问 | 选择/删除语句 |
光标 | 结果设置 |
Carbonado查询不如SQL Select的表现力。与SQL不同,Carbonado查询不支持数据处理或汇总功能。
Carbonado支持最小的查询功能,使自动索引选择成为可能。 SQL中可用的其他功能可以用代码模拟。如果数据库是本地的,则不会提供性能损失。
希望仅将Carbonado用作SQL上方便层的应用程序将无法使用完整的SQL功能。 Carbonado绝不是JDBC的替代者。这类应用可能会选择Carbonado和JDBC的混合物。为了促进这一点,支持当前交易中使用的JDBC连接。
由伯克利DB支持的Carbonado存储库使用基于规则的查询优化器来提出查询计划。基于成本的优化器通常更有效,因为它们估计I/O成本。 Carbonado具有基于规则的优化器,主要是因为它易于编写。
Carbonado能够支持许多不同类型的持久性技术。但是,为了提供足够的Carbonado功能以证明努力的合理性:
理想情况下,持久性技术应支持交易。如果没有,则必须通过在内存中批处理更新来实现其交易。在进行交易之前,更新不会持续。如果支持原子批处理更新,则存储库可以报告支持“读取订单”的隔离级别。否则,它只能支持最低级别的“读取”。
其他功能很不错,但并不是严格必需的: