网站主机空间用哪个好,学院网站建设的现状分析,部分网站打不开的原因,模板建站服务公司文章目录 1、分布式数据服务概述2、KV数据模型#xff08;键值对数据库#xff09;3、分布式数据服务的约束和限制4、接口说明5、分布式数据服务开发步骤5.1、导入模块5.2、构造分布式数据库管理类实例5.3、获取、创建分布式数据库5.4、订阅分布式数据库的数据变化5.5、插入数… 文章目录 1、分布式数据服务概述2、KV数据模型键值对数据库3、分布式数据服务的约束和限制4、接口说明5、分布式数据服务开发步骤5.1、导入模块5.2、构造分布式数据库管理类实例5.3、获取、创建分布式数据库5.4、订阅分布式数据库的数据变化5.5、插入数据到分布式数据库5.6、查询分布式数据库数据5.7、删除分布式数据库数据 1、分布式数据服务概述
分布式数据服务Distributed Data Service DDS为应用程序提供不同设备间数据库的分布式协同能力。
通过调用分布式数据接口应用程序将数据保存到分布式数据库中。通过结合账号用用和数据库三元组分布式数据服务对属于不同应用的数据进行隔离以保证不同应用之间数据不能通过分布式数据服务互相访问。在通过可信认证的设备间分布式数据服务支持应用数据相互同步为用户提供在多种终端设备上最终一致的数据访问体验。
2、KV数据模型键值对数据库
KV数据模型是key-value数据模型的简称其数据以键值对的形式进行组织、索引和存储。
3、分布式数据服务的约束和限制
分布式数据服务的数据模型仅支持KV模型不支持外键触发器等关系数据库中的功能。设备协同数据库针对每条记录Key的长度≤896 ByteValue的长度4 MB。单版本数据库针对每条记录Key的长度≤1 KBValue的长度4 MB。每个应用程序最多支持同时打开16个键值型分布式数据库。分布式数据库与本地数据库的使用场景不同因此开发者应识别需要在设备间进行同步的数据并将这些数据保存到分布式数据库中。分布式数据服务针对每个应用当前的流控制机制kvStore的接口一秒最多访问1000次一分钟最多访问10000次kvManager的接口一秒最多访问50次一分钟最多访问500次。分布式数据库事件回调方法中不允许进行阻塞操作例如修改UI操作。
4、接口说明
以下是键值型数据库持久化功能的相关接口大部分为异步接口。异步接口均有callback和Promise两种返回形式下表均以callback形式为例。
接口名称描述createKVManager(config: KVManagerConfig): KVManager创建一个KVManager对象实例用于管理数据库对象。getKVStore(storeId: string, options: Options, callback: AsyncCallback): void指定options和storeId创建并得到指定类型的KVStore数据库。put(key: string, value: Uint8Arraystringget(key: string, callback: AsyncCallbackbooleanstringdelete(key: string, callback: AsyncCallback): void从数据库中删除指定键值的数据。 5、分布式数据服务开发步骤
5.1、导入模块
import distributedKVStore from ohos.data.distributedKVStore;5.2、构造分布式数据库管理类实例
let kvManager: distributedKVStore.KVManager | undefined undefined;export default class KvStoreDemoAbility extends UIAbility {onCreate(want, launchParam) {let context this.context;const kvManagerConfig: distributedKVStore.KVManagerConfig {context: context,bundleName: com.example.datamanagertest}try {//创建KvManager实例kvManager distributedKVStore.createKVManager(kvManagerConfig)hilog.info(0x0000, testTag, Success in create kvmanager);} catch (e) {let error e as BusinessError;console.error(Failed to create KVManager. Code:${error.code},message:${error.message});}if (kvManager ! undefined) {kvManager kvManager as distributedKVStore.KVManager;//进行后续操作//...}}
}5.3、获取、创建分布式数据库
let kvStore: distributedKVStore.SingleKVStore | undefined undefined;
try {const options: distributedKVStore.Options {createIfMissing: true,encrypt: false,backup: false,autoSync: false,// kvStoreType不填时默认创建多设备协同数据库kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,// 多设备协同数据库kvStoreType: distributedKVStore.KVStoreType.DEVICE_COLLABORATION,securityLevel: distributedKVStore.SecurityLevel.S1};kvManager.getKVStoredistributedKVStore.SingleKVStore(storeId, options, (err, store: distributedKVStore.SingleKVStore) {if (err) {console.error(Failed to get KVStore: Code:${err.code},message:${err.message});return;}console.info(Succeeded in getting KVStore.);kvStore store;// 请确保获取到键值数据库实例后再进行相关数据操作});
} catch (e) {let error e as BusinessError;console.error(An unexpected error occurred. Code:${error.code},message:${error.message});
}
if (kvStore ! undefined) {kvStore kvStore as distributedKVStore.SingleKVStore;//进行后续操作//...
}5.4、订阅分布式数据库的数据变化
try {kvStore.on(dataChange, distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {console.info(datachange callback data: JSON.stringify(data))});
} catch (e) {console.info(An unexpected error occured .Erroe:${e})
}5.5、插入数据到分布式数据库
调用put()方法向键值对数据库插入数据当key值存在时put()方法会修改其值否则会新增一条数据。
const KEY_TEST_STRING_ELEMENT key_test_string;
const VALUE_TEST_STRING_ELEMENT value_test_string;
try {kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, (err) {if (err ! undefined) {console.error(Failed to put data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in putting data.);});
} catch (e) {let error e as BusinessError;console.error(An unexpected error occurred. Code:${error.code},message:${error.message});
}5.6、查询分布式数据库数据
调用get()方法获取指定键的值
try {kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, (err) {if (err ! undefined) {console.error(Failed to put data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in putting data.);kvStore kvStore as distributedKVStore.SingleKVStore;kvStore.get(KEY_TEST_STRING_ELEMENT, (err, data) {if (err ! undefined) {console.error(Failed to get data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in getting data. Data:${data});});});
} catch (e) {let error e as BusinessError;console.error(Failed to get data. Code:${error.code},message:${error.message});
}5.7、删除分布式数据库数据
调用delete()方法删除指定键值的数据
try {kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, (err) {if (err ! undefined) {console.error(Failed to put data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in putting data.);kvStore kvStore as distributedKVStore.SingleKVStore;kvStore.delete(KEY_TEST_STRING_ELEMENT, (err) {if (err ! undefined) {console.error(Failed to delete data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in deleting data.);});});
} catch (e) {let error e as BusinessError;console.error(An unexpected error occurred. Code:${error.code},message:${error.message});
}