• NoSQL数据模型简介


    传统的关系型数据库你如何设计?

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

    ER图(1:1/1:N/N:N,主外键等常见)

    • 用户对应多个订单多个地址

    • 每个订单对应每个商品、价格、地址

    • 每个商品对应产品

    nosql你如何设计

    可以尝试使用BSON

    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"}}],
          }
        ]
      }
    }
    

    两者对比,问题和难点

    • 为什么上述的情况可以用聚合模型来处理?
      • 高并发的操作是不太建议有关联查询的,互联网公司用冗余数据来避免关联查询
      • 分布式事务是支持不了太多的并发的
    • 想想关系模型数据库你如何查?如果按照我们新设计的BSon查询会怎么样?
    聚合模型
    • KV键值
    • bson
    • 列族
      • 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,
        对针对某一列或者某几列的查询有非常大的IO优势。

    • 图形

    NoSQL数据库的四大分类

    • KV键值:典型介绍

      • 新浪:BerkeleyDB+redis
      • 美团:redis+tair
      • 阿里、百度:memcache+redis
    • 文档型数据库(bson格式比较多):典型介绍

      • CouchDB

      • MongoDB

        `MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

        MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。`

    • 列存储数据库

      • Cassandra, HBase
      • 分布式文件系统
    • 图关系数据库

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

    四者对比

  • 相关阅读:
    Hadoop杂记
    hadoop主节点(NameNode)备份策略以及恢复方法
    (转)第12章 Shell脚本编程
    Hadoop添加删除节点
    secondarynamenode异常
    (转)Memcached笔记——(一)安装&常规错误&监控
    浅(kou)谈(hu)杜教筛
    Pollard_Rho 算法
    Miller_Rabin 素数判定算法
    zoj分类(包括poj已做的)
  • 原文地址:https://www.cnblogs.com/pythonyeyu/p/11773485.html
Copyright © 2020-2023  润新知