首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google数据存储左连接等效

Google数据存储左连接等效
EN

Stack Overflow用户
提问于 2017-03-15 16:44:24
回答 1查看 633关注 0票数 1

基本上,我想知道我是否需要使用rdbms而不是google数据存储。

所以,我在gds中有以下三种

代码语言:javascript
复制
request_ledger
key | type   | content | sentTimestamp  
xyx   email    <ssd>     10-10-10 




request_recipient
key request_ledger                  to
1    key(request_ledger,xyz)    joe@bla.com
2    key(request_ledger,xyz)    john@bla.com



result_ledger 
key | request_ledger            | to          | deliveredTimestamp | bouncedTimestamp 
1     key(request_ledger,xyz)    joe@bla.com    10-10-11;

我尽可能多地使用不同的类型,这样我就不会遇到更新/覆盖问题--我总是只保存新的实体,而不是做任何更新。

request_ledger和request_recipient实体是同时创建的,但是result_ledger实体是稍后作为web钩子创建的,因此基本上上面的模型将转换为以下报告:

  • 致joe@bla的电子邮件以10-10-11发送。
  • 发送给john@bla.com的电子邮件仍未收到(即尚未收到任何已发送或反弹的web钩子事件)。

如果这是一个常规的关系数据库管理系统,我可以使用左联接来允许我跨3个表进行报告,并允许在result_ledger中没有关联匹配的情况下使用空值。

比如说..。

代码语言:javascript
复制
select a.type, a.content, a.sentTimestamp, b.to, c.deliveredTimestamp, c.bouncedTimestamp from request_ledger a left join request_recipient b on a.key=b.request_ledger left join result_ledger on b.request_ledger = c.request_ledger and b.to = c.to

这会让我觉得

代码语言:javascript
复制
a.type | a.content |a.sentTimestamp |b.to .      |c.deliveredTimestamp | c.bouncedTimestamp
email  <content>  10:10:10          joe@bla.com   10-10-11
email  <content>  10:10:10          john@bla.com  

但在,我不确定这是否有可能?

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 19:57:11

在使用Datastore时,尝试忘记联接和规范化数据结构。您可能需要考虑使用实体组;request_ledger作为父级,result_ledger作为子级。

您应该考虑将一些数据从request_recipient移动/复制到request_ledger,但是将request_recipient键保留在对象中--这对于检索整个request_recipient对象的事件很有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42815859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档