Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据存储用例_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 数据存储用例

Python 数据存储用例,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我是RDMS的人。假设我有两个实体,必须联接它们并过滤联接。在RDMB SQL中,它类似于: select * from entity1 e1, entity2 e2 where e1.id = e2.fk_id and e1.this = 'that'; 据我所知,对于数据存储,我必须在内存中对运行查询的一个GAE实例执行此操作: 使用筛选器this='that' 从entity2的数据存储中加载所有内容(或在每个entity1.id上运行distinct后对其进行多个调用) 加入内存

我是RDMS的人。假设我有两个实体,必须联接它们并过滤联接。在RDMB SQL中,它类似于:

select *
from entity1 e1, entity2 e2
where e1.id = e2.fk_id
and e1.this = 'that';
据我所知,对于数据存储,我必须在内存中对运行查询的一个GAE实例执行此操作:

  • 使用筛选器this='that'
  • entity2
    的数据存储中加载所有内容(或在每个
    entity1.id
    上运行distinct后对其进行多个调用)
  • 加入内存
如果数据集变得很大(超过我拥有的RAM,特别是当
entity2
增长,我同时处理请求时),上述查询就无法完成。这是正确的吗

通常的处理方法是什么:

  • 只需将非标准化的数据存储在
    大型实体中即可(这感觉非常错误)
  • 是否跨GAE实例分发联接/筛选器?(如果是,这是如何做到的?)
  • 是否将父密钥用于此特定目的
  • 只需继续添加更多内存:)
  • 放弃cloudsql的数据存储

使用非规范化实体,如果您没有一直使用非规范化实体中的所有数据,则创建包含偶尔使用的数据的子实体或从原始实体获取数据。或者创建连接实体。ie非规范化实体表示关系,并且只有来自每个实体的属性使查询执行并允许摘要视图。具体的选择与过滤后如何处理联接有很大关系。ie删除到数据存储的不必要的往返。使用非规范化实体,如果您没有一直使用非规范化实体中的所有数据,则创建包含偶尔使用的数据的子实体或从原始实体获取数据。或者创建连接实体。ie非规范化实体表示关系,并且只有来自每个实体的属性使查询执行并允许摘要视图。具体的选择与过滤后如何处理联接有很大关系。ie删除不必要的数据存储往返。