zoukankan      html  css  js  c++  java
  • redis_NoSql入门概述数据模型简介

      以下面的背景去对比关系型数据库和非关系型数据库的差异(一个电商客户、订单、订购、地址模型来对比以下关系型数据库和非关系型数据库)

      传统数据库一般设计会使用ER图(1:1/1:N/N:N,主键等)

      而NoSql使用的是BSON

    一、什么是BSON

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

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

      上面的json类型的字符串就是一个Bson,这样可以处理多样的数据结构。

    二、传统的关系型数据库与非关系型数据库查询的差异

      传统的系统在查询多张表的关联时都使用关联查询来处理,但是在分布式开发时非常忌讳这样的关联查询,高并发的操作时不太建议有关联查询的,互联网公司用冗余数据来避免关联查询,分布式事务是支持不了太多的并发的。

      而在Redis中使用的是KV键值对实现的,使用key直接就可以查询出来整个关联的数据。

    三、聚合模型

      1.KV键值对

      2.列族(纵向关系)

      3.Bson

      4.图形(复杂的关系,网状关系)

  • 相关阅读:
    字符串类型入门
    报错:Uncaught SyntaxError: Unexpected token)
    EasyUI选项卡避免重复打开
    JS获取当前时间并格式化
    vs2010修改的内容在浏览器页面不变怎么办
    EasyUI的时间控件禁止输入
    HTML表格<tr>行距调整
    Easyui表格显示日期格式错误
    sql server 2008查询时报错,消息:8155,没有为'a'的列2指向任何列
    解决Sql Server服务远程过程调用失败
  • 原文地址:https://www.cnblogs.com/wuyx/p/8645468.html
Copyright © 2011-2022 走看看