一、相关说明
1.数据库在一个服务器上(为了简单,仅为学习使用),端口号为5000,数据库名称为mystore.
2.客户端有avro schema文件,在D:/java_workspace文件夹下,结构如下所示:
3.jar包准备:需要使用kv-3.0.14/lib/文件夹下的kvclient.jar,avro.jar,jackson-core-asl.jar,jackson-mapper-asl.jar这四个jar包。将其导入到eclipse的工程里。
4.这个例子仅是单一绑定,且数据库不需要认证,所以相对来说编码简单。后期我会继续增加认证多绑定方面的内容。
二、获取store Handle
String[] hosts={"202.114.118.24:5000"};// IP和端口号
KVStoreConfig kconfig=new KVStoreConfig("mystore",hosts);
KVStore kvstore=KVStoreFactory.getStore(kconfig);// kvstore Handle
三、Avro Binding(Single Generic Schema Binding)
final Schema.Parser parser =new Schema.Parser();
parser.parse(new File("D:/java_workspace/GPSschema.avsc"));
final Schema gpsSchema=parser.getTypes().get("wuhan.taxi.GPSdata");//schema全称
final AvroCatalog catalog=kvstore.getAvroCatalog();
final GenericAvroBinding binding=catalog.getGenericBinding(gpsSchema);
四、构建Key
ArrayList<String> majorComponents=new ArrayList<String>();
//ArrayList<String> minorComponents=new ArrayList<String>();
majorComponents.add("wuhan");
majorComponents.add("taxi");
majorComponents.add("gpsdata");
majorComponents.add("jiangxiaqu");
Key myKey=Key.createKey(majorComponents);
这里面并没有构建minor key五、读数据
ValueVersion vv=kvstore.get(myKey);
final GenericRecord member;
final String ID;
if(vv!=null)
{
Value v=vv.getValue();
member=binding.toObject(v);
ID=member.get("id").toString();//读取id这个field的值,注意id区分大小写。
System.out.println(ID);
}
六、写数据
final GenericRecord gps=new GenericData.Record(gpsSchema);
ArrayList<Float> coor=new ArrayList<Float>();
coor.add(30.62578f);
coor.add(114.22668f);//构造array
gps.put("id", "AT0497");
gps.put("time", "2010-12-22T10:49:58+08:00");
gps.put("coordinate",coor);
gps.put("projection_categories", "wgs84");
gps.put("state", "normal");
gps.put("speed", 10.067083f);
gps.put("direction", 69.36f);
ArrayList<String> majorComponents1=new ArrayList<String>();
majorComponents1.add("wuhan");
majorComponents1.add("taxi");
majorComponents1.add("gpsdata");
majorComponents1.add("jiangxiaqu");
majorComponents1.add("test1");//构造key
Key myKey1=Key.createKey(majorComponents1);
kvstore.put(myKey1, binding.toValue(gps));
七、Import的接口或类
import oracle.kv.KVStore;
import oracle.kv.KVStoreConfig;
import oracle.kv.KVStoreFactory;
import oracle.kv.Key;
import oracle.kv.Value;
import oracle.kv.ValueVersion;
import java.util.ArrayList;
import oracle.kv.avro.AvroCatalog;
import oracle.kv.avro.GenericAvroBinding;
import java.io.File;
import java.io.IOException;
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericRecord;