利用Avro Bindings向Oracle NoSQL读写数据

本文详细介绍了如何使用Avro与KV Store进行数据绑定与操作,包括获取storeHandle、创建Avro Binding、构建Key以及读写数据等步骤。重点展示了通过Java实现数据的高效存储与检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、相关说明

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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值