一、背景
E.F.Codd在1970年首次提出了数据库系统的关系模型,从此开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础,数据库技术也开始蓬勃发展。而随着几大数据库厂商陆续发布的商业数据库管理系统几乎都支持关系数据模型,数据库技术逐渐统一到以关系型数据库为主导。
2001年后,互联网技术迅速发展,数据量迅速膨胀并并大,人类逐步进入大数据时代。大数据给传统的数据管理方式带来了严峻的挑战,关系型数据库在容量,性能,成本等多方面都难以满足大数据管理的需求。NoSQL数据库通过折中关系型数据库严格的数据一致性管理,在可扩展性、模型灵活性、经济性和访问性等方面获得了很大的优势,可以更好地适应大数据应用的需求,成为大数据时代最重要的数据管理技术。
二、产品介绍
SequoiaDB是新一代分布式文档类数据库,其数据模型为文档模型(JSON),而非传统的关系型数据模型。关系模型以二维表来表示实体与实体之间的联系,在数据建模时需要对数据对象进行拆分,再将各自的信息存到对应的表里,在需要时再将各个表连接起来。而巨杉数据库以一个文档为单位进行存储,支持数组和文档嵌套,关系模型中需要拆分的信息可以直接用一个文档来表示。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,为纯文本格式,支持嵌套结构与数组。
JSON 具有如下形式:
1、对象是一个无序的“键值对”集合,以“{”(左大括号)开始,“}”(右大括号)结束。每一个元素名后跟一个“:”(冒号);而元素之间使用“,”(逗号)分隔;
2、数组是值的有序集合,以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔;
3、值可以为由双引号包裹的字符串,数值,对象,数组,true,false,null,以及 SequoiaDB 数据库特有的数据结构(例如日期,时间等)组成。
三、场景设计
文档模型应用场景非常广泛,这里以一个大家比较熟悉且经常会用到的一个场景——购物车为例,介绍文档模型的使用。
购物车是网上购物时存放感兴趣商品的虚拟篮子,打开购物车,通常希望看到各个商品的概要信息,如所属店铺名称、商品名称、价格、数量等,若商品是服装,可能还需要展示尺码、颜色等属性信息。
当我们用文档模型来表达购物车应用时,一种参考数据模型如下所示:
{ "_id": { "$oid": "57b44b2b2b57085321000001" }, "items": [ { "shopid": 8224, "picture": "http://www.sequoiadb.com/product.jpg", "amount": 1, "price": "117.59", "itemname": "Coffee", "itemid": 194987 }, { "shopid": 9291, "attribute": [ { "color": "Blue", "size": "M" }, { "color": "Pink", "size": "M" } ], "picture": "http://www.sequoiadb.com/product.jpg", "amount": 2, "price": "17.63", "itemname": "T-shirt", "itemid": 543514 |