zoukankan      html  css  js  c++  java
  • 60.通过应用层join实现用户与博客的关联

       

    在构造数据模型的时候,将有关联关系的数据分割为不同的实体,类似于关系型数据库中的模型。

    案例背景:博客网站,一个网站可能有多个用户,一个用户会发多篇博客,此时最好的方式是建立usersblogs两个type,分别存入用户信息和博客信息,这种方式就类型于关系型数据库中的建模方式,如果要查询特定用户的博客,就只能在应用层通过join的方式进行查询。

       

    一、放入数据

       

    PUT /website/users/1

    {

    "name": "小鱼儿",

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

    "birthday": "1980-01-01"

    }

       

    PUT /website/blogs/1

    {

    "title": "我的第一篇博客",

    "content": "这是我的第一篇博客,开通啦!!!"

    "userId": 1

    }

       

    二、搜索小鱼儿发表的所有博客

       

    1、先找出小鱼儿的userid

       

    GET /website/users/_search

    {

    "query": {

    "term": {

    "name.keyword": {

    "value": "小鱼儿"

    }

    }

    }

    }

    执行结果

       

    "hits": [

    {

    "_index": "website",

    "_type": "users",

    "_id": "1",

    "_score": 0.2876821,

    "_source": {

    "name": "小鱼儿",

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

    "birthday": "1980-01-01"

    }

    }

    ]

    }

    }

       

    2、根据userId去搜索博客

       

    GET /website/blogs/_search

    {

    "query": {

    "constant_score": {

    "filter": {

    "terms": {

    "userId": [ 1 ]

    }

    }

    }

    }

    }

       

    执行结果如下:

    "hits": [

    {

    "_index": "website",

    "_type": "blogs",

    "_id": "1",

    "_score": 1,

    "_source": {

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

    "content": "大家好,我是小鱼儿,这是我写的第一篇博客!",

    "userId": 1

    }

    }

    ]

    }

    }

       

    这样通过上面的操作,就属于应用层的join,在应用层先查出一份数据,然后再根据上一次查出的数据进行关联查询下一次的数据。

       

    三、优点和缺点

       

    优点:数据不冗余,维护方便。

    缺点:应用层join,如果关联数据过多,导致查询过大,性能很差。

       

  • 相关阅读:
    ADO.NET 2.调用存储过程
    Resharper上手指南
    获取HTML源码(只取文字,判断编码,过滤标签)
    .net(c#) winform文本框只能输入数字,不能其他非法字符(转)
    ADO.NET – 3.书籍管理系统详解
    GemBox.ExcelLite.dll导出到Excel
    C#4.0图解教程 第7章 类和继承
    C#读取网站HTML内容
    C#回顾 – 1.IO文件操作
    Javascript s10 (Jquery相关手册整合及功能实现)
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8542118.html
Copyright © 2011-2022 走看看