zoukankan      html  css  js  c++  java
  • 【Rdeis 03】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

    四者对比

    转载于:https://www.cnblogs.com/pythonyeyu/p/11773485.html

    Node.js的文章,与其相关的
  • 相关阅读:
    HDU 5313 bitset优化背包
    bzoj 2595 斯坦纳树
    COJ 1287 求匹配串在模式串中出现的次数
    HDU 5381 The sum of gcd
    POJ 1739
    HDU 3377 插头dp
    HDU 1693 二进制表示的简单插头dp
    HDU 5353
    URAL 1519 基础插头DP
    UVA 10294 等价类计数
  • 原文地址:https://www.cnblogs.com/boyYu/p/12454227.html
Copyright © 2011-2022 走看看