zoukankan      html  css  js  c++  java
  • 61.通过数据冗余实现用户与博客的关联查询

    主要知识:

    • 冗余数据建模
    • 对已建好的冗余数据中进行查询

       

    一、冗余数据建模

    构造冗余的用户和博客数据,第二种建模方式就是利用冗余数据,采用文档数据模型进行数据建模,实现用户和博客的关联。

       

    PUT /website/users/1

    {

    "name": "小鱼儿",

    "email": "xiaoyuer@sina.com",

    "birthday": "1980-01-01"

    }

       

    PUT /website/blogs/1

    {

    "title": "小鱼儿的第一篇博客",

    "content": "大家好,我是小鱼儿。。。",

    "userinfo": {

    "userId": 1,

    "username": "小鱼儿"

    }

    }

    冗余数据,就是将可能会进行搜索的条件和要搜索的数据,放在一个doc中,blogs/1中就已经存在userinfo的数据,所以可以直接进行查询,而不用分两次查询。

       

    二、基于冗余用户数据搜索博客

       

    GET /website/blogs/_search

    {

    "query": {

    "term": {

    "userinfo.username.keyword": {

    "value": "小鱼儿"

    }

    }

    }

    }

       

    这样就不需要在应用层进行join,先搜一个数据找到id,再去搜另一份数据。可以直接用一个有冗余数据的type即可,指定要的搜索条件,即可搜索出自己想要的数据来。

       

    三、优点和缺点

       

    优点:搜索性能高,不需要执行两次搜索

    缺点:数据冗余,维护成本高 --> 如果你的username变化了,需要同时要更新user typeblog type的所有数据。

    一般来说,对于es这种NoSQL类型的数据存储来讲,都是冗余模式。这当然要用户自已去维护数据的关联关系,所以一旦出现冗余数据的修改,必须记得将所有关联的数据全部更新。

  • 相关阅读:
    JavaScript-4.2函数,变量作用域---ShinePans
    2019-8-31-C#-简单读取文件
    2019-8-31-C#-简单读取文件
    2019-8-31-C#-大端小端转换
    2019-8-31-C#-大端小端转换
    2019-6-11-C#-标准性能测试
    2019-6-11-C#-标准性能测试
    2018-2-13-win10-uwp-右击选择-GridViewItem-
    2018-2-13-win10-uwp-右击选择-GridViewItem-
    2019-8-31-NuGet-如何设置图标
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8542122.html
Copyright © 2011-2022 走看看