ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

分布部署存储

2021-07-21 14:05:49  阅读:142  来源: 互联网

标签:数据服务 存储 LOG 部署 数据库 分布 new 数据 分布式


1. 如何使用分布式数据库

 

介绍

分布式数据服务(Distributed Data Service,DDS) 为应用程序提供不同设备间数据库数据分布式的能力。通过调用分布式数据接口,应用程序将数据保存到分布式数据库中。通过结合帐号、应用和数据库三元组,分布式数据服务对属于不同的应用的数据进行隔离,保证不同应用之间的数据不能通过分布式数据服务互相访问。在通过可信认证的设备间,分布式数据服务支持应用数据相互同步,为用户提供在多种终端设备上一致的数据访问体验。

有关分布式数据服务更加详细的介绍可以参考分布式数据服务游戏

本教程将为您完整介绍以下内容并展示完整示例:

 

分布式数据库的创建

分布式数据库的插入和删除

分布式数据库的数据同步

 

2. 实现分布式数据库需要申请的权限

 

为了实现分布式数据库,需要在entry\src\main\config.json中申请ohos.permission.DISTRIBUTED_DATASYNC权限,以便允许不同设备间的数据交换。示例代码如下:

 

3. 如何创建分布式数据库

 

要创建分布式数据库,首先要做的就是创建分布式数据库管理器实例KvManager,我们定义了如下方法:

private KvManager createManager() {

KvManager manager = null;

try {

KvManagerConfig config = new KvManagerConfig(this);

manager = KvManagerFactory.getInstance().createKvManager(config);

}

catch (KvStoreException exception) {

HiLog.info(LABEL_LOG, LOG_FORMAT,TAG, "some exception happen");

}

return manager;

}

 

创建成功后,借助KvManager创建SINGLE_VERSION分布式数据库,方法如下:

private SingleKvStore createDb(KvManager kvManager) {

SingleKvStore kvStore = null;

try {

Options options = new Options();

options.setCreateIfMissing(true).setEncrypt(false).setKvStoreType(KvStoreType.SINGLE_VERSION);

kvStore = kvManager.getKvStore(options, STORE_ID);

} catch (KvStoreException exception) {

HiLog.info(LABEL_LOG, LOG_FORMAT,TAG, "some exception happen");

}

return kvStore;

}

 

4. 如何进行数据查询、插入和删除

 

数据插入

 

在将数据写入分布式数据库之前,需要先构造分布式数据库的Key(键)和Value(值),通过putString方法将数据写入到数据库中,具体示例如下:

private void writeData(String key, String value) {

    if (key == null || key.isEmpty() || value == null || value.isEmpty()) {

        return;

    }

    singleKvStore.putString(key, value);

}

 

数据查询

 

分布式数据库中的数据查询是根据Key(键)来进行的,如果指定Key(键),则会查询出对应Key(键)的数据;如果不指定Key,既为空,则查询出所有数据,查询示例代码如下

private void queryContact() {

List entryList = singleKvStore.getEntries("");

contactArray.clear();

try {

for (Entry entry : entryList) {

contactArray.add(new Contacter(entry.getValue().getString(), entry.getKey()));

}

} catch (KvStoreException exception) {

HiLog.info(LABEL_LOG, LOG_FORMAT,TAG,"the value must be String");

}

contactAdapter.notifyDataChanged();

}

 

5. 如何进行分布式数据库的同步

 

在进行数据同步之前,首先需要先获取当前组网环境中的设备列表,然后指定同步方式(PULL_ONLY,PUSH_ONLY,PUSH_PULL)进行同步,以PUSH_PULL方式为例,示例代码如下:

private void syncContact() {

    List<DeviceInfo> deviceInfoList = kvManager.getConnectedDevicesInfo(DeviceFilterStrategy.NO_FILTER);

    List<String> deviceIdList = new ArrayList<>();

    for (DeviceInfo deviceInfo : deviceInfoList) {

        deviceIdList.add(deviceInfo.getId());

    }

    HiLog.info(LABEL_LOG, LOG_FORMAT,TAG, "device size= " + deviceIdList.size());

    if (deviceIdList.size() == 0) {

        showTip("组网失败");

        return;

    }

    singleKvStore.registerSyncCallback(new SyncCallback() {

        @Override

        public void syncCompleted(Map<String, Integer> map) {

            getUITaskDispatcher().asyncDispatch(new Runnable() {

                @Override

                public void run() {

                    queryContact();

                    showTip("同步成功");

                }

            });

            singleKvStore.unRegisterSyncCallback();

        }

    });

    singleKvStore.sync(deviceIdList, SyncMode.PUSH_PULL);

}

 

 

6. 最终实现效果

 

标签:数据服务,存储,LOG,部署,数据库,分布,new,数据,分布式
来源: https://www.cnblogs.com/grees-0/p/15039151.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有