基本上,我想知道我是否需要使用rdbms而不是google数据存储。
所以,我在gds中有以下三种
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钩子创建的,因此基本上上面的模型将转换为以下报告:
如果这是一个常规的关系数据库管理系统,我可以使用左联接来允许我跨3个表进行报告,并允许在result_ledger中没有关联匹配的情况下使用空值。
比如说..。
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这会让我觉得
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 但在,我不确定这是否有可能?
发布于 2017-10-24 19:57:11
在使用Datastore时,尝试忘记联接和规范化数据结构。您可能需要考虑使用实体组;request_ledger作为父级,result_ledger作为子级。
您应该考虑将一些数据从request_recipient移动/复制到request_ledger,但是将request_recipient键保留在对象中--这对于检索整个request_recipient对象的事件很有帮助。
https://stackoverflow.com/questions/42815859
复制相似问题