KolaDB

Language: English 中文


介绍

KolaDB是一个简单的数据存储服务,以GPL第三版协议开源。

KolaDB的组织结构,或者说数据的存储和处理方式,是以对象(Object)为基本单位的,并在对象一级实现了原子性。 若干个对象被置于一个对象集(Collection)中,而若干个对象集共存于一个群落(Cluster)中。 该设计是为了日后考虑安全性时,可以按照群落进行授权。 目前,KolaDB仅提供可配置的监听方式来实现访问限制,这一限制已经可以解决大部分自部署的需求。

KolaDB项目包含了服务端daemon和客户端用的SDK。 作为服务端部署时,需要启动daemon并保持运行。 作为客户端使用时无需部署,直接使用SDK连接服务端即可。

部署服务

部署服务端程序的步骤如下。

第一步,获取KolaDB的发行包。 可以从GitHub上下载到源代码,也可以从Packagist库通过Composer获取,按需自取。

第二步,编辑配置文件。 在KolaDB根目录下的daemon目录下可以找到 KolaDB.config.sample.php 文件, 以此为模板,编辑 KolaDB.config.php 文件,设定好监听地址和端口, 并按需放置到以下任一目录下,按优先级排列为: (1) daemon目录下; (2) /etc/KolaDB目录下; (3) 运行用户的主目录下的KolaDB目录(~/KolaDB)下。 从安全性角度考虑,默认只接受本地访问请求,如有需求也可以自行更改监听范围。

第三步,运行KolaDB的服务daemon。 鉴于不是所有环境都兼容PCNTL或者有Swoole支持,可以使用nohup。 运行daemon的方式为执行daemon目录下的 KolaDBDaemon.php 文件。

连接服务

要使用KolaDB的服务,可以通过SDK进行访问。 KolaDB的SDK可以通过Composer获取:composer require sinri/kola-db

SDK入口类为sinri\KolaDB\sdk\KolaDBSDK,使用服务地址和端口即可初始化此类。 此类提供了对群落、对象集和对象的各种操作。 以下操作均为原子操作。

listClusters

列出群落名字列表。不需要参数。

listCollectionsInCluster

列出指定群落中的对象集名字列表。需要参数为群落名(clusterName)。

listObjectsInCollection

列出指定对象集中的对象名字列表。需要参数为群落名和对象集名(clusterName, collectionName)。

queryObject

按照指定的条件查询对象集中的对象。需要的参数为群落名、对象集名和查询(clusterName, collectionName, query)。 其中查询参数可以为查询类(KolaQuery)的实例,进行条件查询;也可以是一个字符串,直接按对象名称查询。

editObject

向指定的群落和对象集写入一个以指定字符串为名的对象。 需要参数为群落名、对象集名、对象名和属性列表(clusterName, collectionName, objectName, data)。 其中属性列表为一个键值对关联数组,键与值均为字符串。

dropCluster

删除一个群落。需要参数为群落名(clusterName)。

dropCollection

删除一个对象集。需要参数为群落名和对象集名(clusterName, collectionName)。

dropObject

删除一个对象。需要参数为群落名、对象集名、对象名(clusterName, collectionName, objectName)。

renameCluster

重命名群落。需要参数为原群落名和新名称(clusterName, name)。

renameCollection

重命名对象集。需要参数为群落名,原对象集名和新名称(clusterName, collectionName, name)。

renameObject

重命名对象。需要参数为群落名,对象集名,原对象名和新名称(clusterName, collectionName, objectName, name)。


Copyright 2018 Sinri Edogawa.