乐趣区

关于数据库开发:分布式存储

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

介绍
分布式数据服务(Distributed Data Service,DDS)为应用程序提供不同设施间数据库数据分布式的能力。通过调用分布式数据接口,应用程序将数据保留到分布式数据库中。通过联合帐号、利用和数据库三元组,分布式数据服务对属于不同的利用的数据进行隔离,保障不同利用之间的数据不能通过分布式数据服务相互拜访。在通过可信认证的设施间,分布式数据服务反对利用数据互相同步,为用户提供在多种终端设备上统一的数据拜访体验。
无关分布式数据服务更加具体的介绍能够参考分布式数据服务游戏。
本教程将为您残缺介绍以下内容并展现残缺示例:

分布式数据库的创立
分布式数据库的插入和删除
分布式数据库的数据同步

  1. 实现分布式数据库须要申请的权限

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

   "reqPermissions": [ 
     {"name": "ohos.permission.DISTRIBUTED_DATASYNC"} 
  ] 
}
  1. 如何创立分布式数据库

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

    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 分布式数据库,办法如下:

    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; 
}
  1. 如何进行数据查问、插入和删除

数据插入

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

    if (key == null || key.isEmpty() || value == null || value.isEmpty()) {return;} 
    singleKvStore.putString(key, value); 
}

数据查问

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

    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();}
  1. 如何进行分布式数据库的同步

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

    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); 
}
  1. 最终实现成果
  2. 示例代码
    代码构造解读

为了不便您的学习,咱们提供了的分布式数据库示例工程的残缺代码,工程以一个繁难的信息管理系统为背景,代码的工程构造如下:

退出移动版