我的任务是找出一种方法来实现NoSQL / KeyValue-esque抽象层(作为Java接口或REST接口),它使用Oracle RDBMS作为数据存储。这样做的原因包括必须处理遗留的基础架构,这些基础架构不会很快消失,并且为开发人员提供了使用基本CRUD功能快速构建应用程序原型的能力。
约束:现有的Oracle RDBMS实例需要是数据存储。
我正在考虑建立自己的Java界面来实现这一点,但我担心我可能会重新发明轮子。有没有我应该看的Java库?
这是一个关于API的消费者界面可能是什么样子的稻草人设计:
public interface KeyValueStore {
/**
* this would create a new Oracle table in a predefined schema
* @param dbName
* @return
*/
DB create(String dbName);
/**
* Store a simple Map<> for the given entity with the given identity (maybe primary key)
* Perhaps encode properties as a JSON string and store it as a BLOB in a column?
*
* @param db
* @param entity
* @param identity
* @param properties
*/
void save(DB db, String entity, String identity, Map<String, String> properties);
/**
* Retrieve an entity with the specified identity
*
* @param db
* @param entity
* @param identity
* @return
*/
Map<String, String> get(DB db, String entity, String identity);
public interface DB {
String getName();
// add more methods here
}
}
答案 0 :(得分:0)
我已经创作并开源了一个Java实现,它提供了一个基于RDBMS的NoSQL抽象,可以将实体存储为无模式的属性包(例如,JSON对象或Java Maps
)。实体具有GUID并且可以具有多个版本。就数据存储而言,实体的其余部分是不透明的。从服务使用者的角度来看,只需存储新属性即可更改数据存储区的“模式”。
https://github.com/akamai/Entity-Persistence-Service
请参阅http://backchannel.org/blog/friendfeed-schemaless-mysql获取技术灵感。