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,如果关联数据过多,导致查询过大,性能很差。

       

  • 相关阅读:
    过滤器排序规则
    n维立体空间建模
    将多个Sheet导入到同一个Excel文件中
    Oracle分页查询
    SSH整合逻辑图
    MD5算法原理
    Spring框架整合Struts2
    Pandas入门——Series基本操作
    Python 使用selenium+webdriver爬取动态网页内容
    Python处理json和dict
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8542118.html
Copyright © 2011-2022 走看看