Skip to content

seerline/ago-sisdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一、什么是 sisdb ?


sisdb是一个完全开源的使用ANSI C语言编写、支持本地文件、网络、内存、数据可持久化的时序数据库;

主要应用于有价证券市场行情采集、因子数据存取、主要优势在处理大吞吐量的时序结构化数据;

主要具备部署简单、低延迟、查询数据格式丰富、多数据表流式回放等特点;

二、为什么需要 sisdb


  1. 在现有的数据库中,主流的关系数据库因为吞吐量的原因无法满足高速大量的数据写入,即便是现在最流行的mongodb,当发生随机写入时效率也会大幅度降低;而作为吞吐量足够的内存数据库redis,但是其所提供的数据结构却并未针对有价证券体系,和普通的文件存储解决方案相比并没有什么优势;
  2. 生产环境和开发环境对数据格式要求的不同,对于开发者来说最好的情况是开发阶段用json格式做数据交互;进入生产环境使用压缩(且加密)的二进制数据流;这样即保证了开发的效率,同时可以平滑切换到安全可靠的生产环境;
  3. 越来越多的跨平台开发需求,使得目前跨系统的前端通常以WEB应用为主;sisdb直接提供了websocket标准通讯协议来提供数据支持,使得针对跨平台的客户端数据支持有先天的优势;
  4. sisdb 是专门为有价证券体系开发的一款高性能、安全、便捷的时序结构化数据库;sisdb针对有价证券的行情和交易数据进行优化存取,不仅支持二进制结构化数据流,而且还支持 json、array、csv 数据格式的输入和输出,便于用户分析数据;
  5. sisdb提供插件式功能扩展,便于二次开发,很方便的扩展功能,并且支持python的插件开发;

三、sisdb 的技术特征


3.1 通讯协议遵循标准 websocket 协议;

采用websocket协议格式,可以方便的为Web前端提供数据支持;

3.2 数据输入和输出支持的格式;

二进制数据格式;主要指结构化数据、压缩数据;

字符串数据格式;主要包括JSON格式、数据格式、CSV格式

3.3 主要支持的4种数据表操作;

3.3.1、memdb
存储任意键值数据,
主要支持 订阅和发布数据,
全部数据都在内存,记录网络log,便于历史数据备份回放;
3.3.2、sisdb
主要存储结构化数据,数据类型为结构化数据,日期型的数据按年储存,其他的数据按天存储,数据支持增删插;
     支持单条任意格式数据、支持列表任意格式数据;
     按用户读取热度加载部分数据到内存;
     这种数据内存加载方式的好处是,可以避免数据写入后没有读者,而浪费内存资源;
3.3.3、snodb
仅存储结构化数据,数据类型为结构化数据,按天存储到不同目录下,数据只支持增量写入模式;内存仅保留当日的数据,当日数据结束后就转存到磁盘中;
3.3.4、subdb
主要用于数据分发和传递,不保存历史数据,发送成功即销毁;

四、开始使用 sisdb


4.1、下载并安装sisdb

    git clone  https://github.com/seerline/sisdb.git
    cd sisdb/bin
    make

4.2、运行sisdb

    ./sisdb -f sisdb-server.conf 

4.3 部分指令集

> [db].show  [subject]

列出[db]数据集合中的所有数据表和基本信息

> [db].get [subject].[sdb] [command]

[db] 表示从哪个数据集合分发的指令 [subject] 表示取哪只股票数据 [sdb] 表示取哪种数据格式 [command] 可有可无,由command定义数据范围和字段范围 command为json命令 sisdb.get sh.info {"format":"json"}

> [db].set [subject].sdb [data]

以json格式传输数据 可以是{},也可以是 []

[db] 表示从哪个数据集合分发的指令 [subject] 表示取哪只股票数据,必须有明确的代码 [sdb] 表示取哪种数据格式 [data] 表示跟的数据,

4.4 目录说明

bin - 输出文件、配置文件等

src - 源码

api - c 语言的数据库调用接口

client - 客户端访问数据库的例子

test - 单元测试

workers - 所有的插件目录

data - 默认数据文件存放位置(运行期目录)

4.5 主配置文件

sisdb.server.conf -- 作为独立服务时使用的配置文件 主要配置文件 详见配置文件中说明

4.6 数据结构字段说明

字段名 数据类型 长度 数量 小数点 字段约束
字符串 参考数据类型定义 字段长度 默认为1 默认为0 I 为索引 O 为唯一

4.7 数据类型说明

数据类型标志 类型说明 字节说明 备注
T 毫秒 8 1630906080840
S 4、8 1630906080
M 分钟 4 27181768
D 4 20100101
I 整数 1、2、4、8 -1234
U 无符号整数 1、2、4、8 1234
C 字符型 1..N SH600600
F 浮点数 4、8 1234.56

五、sisdb 的程序架构和扩展性

state forkstatus <<fork>>
state joinstatus <<join>>
state stopstatus <<end>>

[*] --> websocket
websocket --> server
server --> forkstatus
forkstatus --> sisdb
forkstatus --> memdb
forkstatus --> snodb
forkstatus --> ...
sisdb --> joinstatus
memdb --> joinstatus
snodb --> joinstatus
... --> joinstatus
joinstatus --> client
client --> stopstatus