一、NoSQL数据模型简介

  以一个电商客户、订单、订购、地址模型来对比关系型数据库和非关系型数据库

  1、传统关系型数据库如何设计

    ER图(1:1、1:N、N:1)主外键等

    

 

  2、NOSQL如何设计

    BSON ()是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象

    用BSon画出构建的数据模型

{
 "customer":{
   "id":1136,
   "name":"Z3",
   "billingAddress":[{"city":"beijing"}],
   "orders":[
    {
      "id":17,
      "customerId":1136,
      "orderItems":[{"productId":27,"price":77.5,"productName":"thinking in java"}],
      "shippingAddress":[{"city":"beijing"}]
      "orderPayment":[{"ccinfo":"111-222-333","txnid":"asdfadcd334","billingAddress":{"city":"beijing"}}],
      }
    ]
  }
}

 

  问题和难点:

  为什么用聚合模型来处理

  (1)高并发的操作是不太建议用关联查询的,互联网公司用冗余数据来避免关联查询

  (2)分布式事务是支持不了太多的并发的

 

  3、聚合模型

  (1)K-V 键值对

  (2)BSON

  (3)列族

    顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一 列或者某几列的查询有非常大的IO优势。

    

 

  (4)图形

    

 

二、NoSQL数据库的四大分类

  1、K-V 键值对

    •  新浪:BerkeleyDB + Redis
    •  美团:Redis + tair
    •  阿里、百度:memcache + Redis

  2、文档型数据库(bson格式比较多)

    • CouchDB
    • MongoDB
      • MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
      • MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

  3、列存储数据库

    • Cassandra、HBase
    • 分布式文件系统

  4、图关系数据库

    • 它不是放图形的、放的是关系比如:朋友圈社交网络、广告推荐系统
    • 社交网络、推荐系统。专注于构建关系图谱
    • Neo4j、InfoGrid

  四者对比:

   

 

posted on 2021-12-28 14:12  格物致知_Tony  阅读(63)  评论(0编辑  收藏  举报