SequoiaDB巨杉数据库_SequoiaDB
SequoiaDB巨杉数据库_下载

文档

安装

基本操作

数据模型

系统架构

数据库管理

连接器

驱动

参考手册

故障排除

SAC

Web服务

版本信息

帮助

  • 内容
  • 评论
  • 修订记录

文档

概念

SequoiaDB 中的文档为 JSON 格式,一般又被称为记录。在数据库内部使用BSON,即二进制的方式存放 JSON 数据。

一般来说,一条文档由一个或多个字段构成,每个字段分为键与值两个部分,如下为包含两个字段的文档:

{ "姓名" : "张三", "性别" : "男" }

Note:

BSON 文档可能有多个同名的字段,但是,大多数 SequoiaDB 接口不支持重复的字段名,如果需要操作的文档有多个同名的字段,请参阅驱动程序了解更多信息。

SequoiaDB 内部程序创建的一些文档可能含有重名的字段,但是不会向现有的用户文档添加重名的键。

字段类型

每个字段的键(字段名)为字符串,而值则可以为数字,字符串,嵌套 JSON,嵌套数组等对象。SequoiaDB 所支持的值类型见下表:

值类型 定义 比较优先级权值 用例
整数 整数
范围:-2147483648 至 2147483647
10 { "key" : 123 }
长整数 整数
范围:-9223372036854775808 至 9223372036854775807
如果用户指定的数值无法适用于整数,则 SequoiaDB 自动将其转化为浮点型
10 { "key" : 3000000000 }
{ "key" : { "$numberLong" : "3000000000" } }
浮点数 浮点数
范围:-1.7E+308 至 1.7E+308
10 { "key" : 123.456 }
{ "key" : 123e+50 }
高精度数 高精度数
范围:小数点前最高 131072 位,小数点后最高 16383 位
10 { "key" : { $decimal:"123.456" } }
字符串 双引号包含的字符串 15 { "key" : "value" }
对象 ID(OID) 十二字节对象 ID 35 { "key" : { "$oid" : "123abcd00ef12358902300ef" } }
布尔 true 或者 false 40 { "key" : true }{ "key" : false }
日期 YYYY-MM-DD 的日期形式
范围:1900-01-01 至 9999-12-31
45 { "key" : { "$date" : "2012-01-01" } }
时间戳 YYYY-MM-DD-HH.mm.ss.ffffff 的时间戳形式
范围:1902-01-01 00:00:00.000000 至 2037-12-31 23:59:59.999999
45 { "key" : { "$timestamp" : "2012-01-01-13.14.26.124233" } }
二进制数据 Base64 形式的二进制数据 30 { "key" : { "$binary" : "aGVsbG8gd29ybGQ=", "$type" : "1" } }
正则表达式 正则表达式 50 { "key" : { "$regex" : "^张", "$options" : "i" } }
对象 嵌套 JSON 文档对象 20 { "key" : { "subobj" : "value" } }
数组 嵌套数组对象 25 { "key" : [ "abc", 0, "def" ] }
null 5 { "key" : null }
最小值 比所有值小 -1 { "key" : {"$minKey": 1 } }
最大值 比所有值大 127 { "key" : {"$maxKey": 1 } }

字段顺序

文档中的各字段无排列顺序,在进行数据操作时字段之间的顺序可能会被调换。

当表示嵌套对象中的某一个字段时,可以使用“.”(句号)在字段名之间进行分割。例如给定数据:

{ "姓名" : "张三", "地址" : { "街道" : "水蓝街", "城市" : "xx", "省份" : "yy" } }

用户可以使用“地址.城市”字段名表示地址子对象中的城市字段。

Note:

  • 每个文档的最大尺寸为 16MB
  • 文档中必须包括“_id”字段,如果用户没有提供该字段,系统会自动生成一个对象 ID 类型的字段
  • “_id”字段在集合内唯一
  • 文档的字段名不可以“$”字符起始
  • 文档的字段名不可以包含“.”字符
  • 不同类型字段的值进行比较时,比较优先级权值越大,该类型的值就越大。

数组

概念

SequoiaDB 中的文档为 JSON 格式,一般又被称为记录。当记录中的某一字段对应多个值时,用户可以使用数组结构存放数据。

格式

数组由“[”(左中括号)起始,至“]”(右中括号)结束,其中包含零个或多个值。

{ "字段名" : [ "<值1>", "<值2>", "<值n>" ] }

示例

数组可以存放完全不相同的数据类型,其中每个记录以从 0 起始的下标表示。例如:

{ "key" : [ "hello", "world" ] }

其中“hello”在数组中的下标为 0,而“world”在数组中的下标为 1。数组之中的值有序,在进行数据操作时数组中的值顺序不会改变。表示数组中某个元素时,可以使用“字段名.下标”的方式。

例如:如果希望表示 key 中“world”所在的值,可以使用“key.1”作为字段名。

对象ID

概念

对象 ID 为一个12字节的 BSON 数据类型,包括如下内容:

  • 4 字节精确到秒的时间戳
  • 3 字节系统(物理机)标示
  • 2 字节进程 ID
  • 3 字节由随机数起始的序列号
4 字节时间戳 3 字节系统标示 2 字节进程ID 3 字节序列号

该对象 ID 可以在集群环境中,对每台系统中的每个进程,每秒钟标示 16777216 个不同的数值,因此基本可以认为在集群环境中全局唯一。

在 SequoiaDB 中,每个集合中存放的文档必须拥有一个 _id 字段,并且该字段在集合中唯一。

格式

对象 ID 的表达形式如下:

{ "$oid" : "<24字节16进制字符串>" }

示例

对象 ID 的显示结果如下:

{ "key" : { "$oid" : "5156c192f970aed30c020000" } }

日期

概念

SequoiaDB 中的日期使用 YYYY-MM-DD 的形式存取,在存储时将其转换为 8 字节的整数。

格式

日期的表达形式如下:

{ "$date" : "<YYYY-MM-DD>" }

示例

{ "createTime" : { "$date" : "2012-05-12" } }

时间戳

概念

SequoiaDB 中的时间戳使用 YYYY-MM-DD-HH.mm.ss.ffffff 的形式存取,在存储时将其转换为 8 字节的整数。

格式

时间戳的表达形式如下:

{ "$timestamp" : "<YYYY-MM-DD-HH.mm.ss.ffffff>" }

示例

{ "createTime" : { "$timestamp" : "2012-05-12-13.15.21.241523" } }

二进制数据

概念

在 SequoiaDB 中的数据使用 JSON 形式访问,因此对于二进制的数据需要用户使用 Base64 方式进行编码,之后以字符串的形式发送至数据库。

格式

二进制数据的表达形式如下:

{ "$binary" : "<数据>", "$type" : <类型> }

其中“数据”必须为 Base64 编码的数据,“类型”为 0-255 之间的十进制数值,用户可以任意指定该范围之间的数值作为应用程序中的类型标示。

Base64 为一种通用的数据转换形式,主要将二进制数据转化为以纯 ASCII 字符串表示的字节流。一般来说转换之后的数据长度会大于原本的数据长度。

为了节省空间,在 SequoiaDB 的内部存放数据时,会将 Base64 编码后的数据解码为原始数据进行存放。当用户读取数据时会再次将其转化为 Base64 形式发送。

示例

字符串“hello world”被 Base64 编码后的数据为“aGVsbG8gd29ybGQ=”。包含“helloworld”二进制数据,且类型为 1 的 JSON 数据为:

{ "key" : { "$binary" : "aGVsbG8gd29ybGQ=", "$type" : "1" } }

正则表达式

概念

SequoiaDB 可以使用正则表达式检索用户数据。

格式

正则表达式输入的格式如下:

{ "$regex" : "正则表达式", "$options" : "选项" }

其中“正则表达式”为一个正则表达式字符串,“选项”则参见下表:

选项 描述
i 匹配时不区分大小写。
m 允许进行多行匹配;当该参数打开时,字符“^”与“&”匹配换行符的之后与之前的字符。
x 忽略正则表达式匹配中的空白字符;如果需要使用空白字符,在空白字符之前使用反斜线“\”进行转意。
s 允许“.”字符匹配换行符。

当使用选项时,用户可以使用任意组合指定其中的选项。

示例

使用正则表达式进行大小写忽略,匹配以字符“W”起始的字符串,可以使用:

{ "key" : { "$regex" : "^W", "$options" : "i" } }

关于正则表达式规则,请参阅 Perl正则表达式手册

高精度数

概念

在 SequoiaDB 中可以使用高精度数,以满足银行等企业对于高精度数据存储和运算的需求场景,可以保证精度不丢失。

格式

高精度数的表达形式如下:

{ "$decimal" : "<数据>" }
{ "$decimal" : "<数据>", "$precision" : [<总精度>, <小数精度>] }

有两种表示方法:

  1. 不指定数字的精度范围,可以支持最大的精度范围;
  2. 可以指定数字的总精度和小数精度。

其中“数据”为字符串形式的数字,“总精度”为该数字总的精度范围,“小数精度”为该数字中小数部分的精度范围。

由于需要确保精度不丢失,该类型的数据会使用较高的存储空间和运算代价。

示例

使用高精度数表示double类型无法存储的数字:1.88888E+308

{ "key" : { "$decimal" : "1.88888E+308" }
请登陆后再发表评论
最新评论
更新日志
  • 2016-10-20
    v2.8
回到顶部
公司简介
广州巨杉软件开发有限公司,专注新一代大数据基础架构研发,是国内领先的新一代分布式数据库厂商。公司获评硅谷最具影响力创新商业媒体《红鲱鱼》评选的“全球创新企业100强”,并连续两年入选美国知名科技媒体《快公司》评选的“中国50大创新公司”榜单。目前已拥有客户包括多家世界500强企业以及著名IT互联网公司。
粤ICP备13048785号     广州巨杉软件开发有限公司 版权所有