如何在更改为微服务时中断关系数据库

时间:2016-01-05 04:22:59

标签: sql node.js microservices

在单片应用程序中,我有一个像这样的示例数据库

User
id:  serial
name : string
password :string 
..
Blog
id : serial
body : string
author_id : Int 

当我想获得包含作者信息的帖子列表时,我只是进行内部联接查询。如果我将我的系统更改为微服务。博客和用户是独立的服务。他们将拥有自己的数据库。 我应该在博客数据库中添加author_id列吗? 如果博客数据库没有author_id,我怎样才能获得包含作者信息的帖子列表? 我真的需要一个Nodejs中微服务的例子

1 个答案:

答案 0 :(得分:0)

是的,您应该在博客数据库中添加author_id列。但你不应该添加外键。

如果您想获得包含相关用户信息的帖子列表,您应该使用API​​网关模式。 API网关是所有微服务的链接元素。此元素向微服务发出请求,然后以编程方式合并响应。

例如,您可以将此功能用于合并响应:

function(a, b, select) {
  var m = a.length, n = b.length, c = [];
  for (var i = 0; i < m; i++) {
    var x = a[i];
    for (var j = 0; j < n; j++) { // all combinations
      var y = select(x, b[j]);  // filter out the rows and columns you want
      if (y) c.push(y);         // if a row is returned add it to the table
    }
  }

  return c;
}

此外,您可以找到API网关的交钥匙解决方案。