我在Google应用引擎上运行了Python服务器,并实现了一个社交网络。我正在努力寻找最好的方法(best=fast和廉价)来实现项目上的交互。就像任何其他社交网络一样,我有流项目(“内容”),用户可以“喜欢”这些项目。
至于查询,我希望能够:
我当前的实现包括: 1.内容项上的IntegerProperty,它保存了所有的类计数2. InteractionModel --一个包含内容id的键id qual的NdbModel (快速获取)和一个JsonPropery,该JsonPropery保存了likers用户名。
每次用户喜欢内容时,我都需要更新计数器和用户列表。这要求我运行和支付4个数据存储操作(2读,2写)。最重要的是,具有大量相似项的项目会产生一个具有大量json的InteractionModel,在读取/写入时,序列化和反序列化需要时间(比RepeatedProperty还要快)。更新后的字段都没有索引(内置索引),也没有包含在组合索引(index.yaml)中。
寻找一种更有效和成本效益更高的方式来实现同样的要求。
发布于 2016-01-15 10:17:10
我猜你的模型中有两个实体:用户和内容。您的查询似乎聚合在多个内容对象上。
如何将这些聚合值保存在用户对象上?这样,您不需要执行任何查询,而是只查找这些查询的用户对象中存储的数据。
不过,在某种程度上,您可能会考虑不使用数据存储,而是考虑使用sql存储。它有一个较高的恒定成本,但我猜想,在某个时候(更多的内容/用户),这可能是值得考虑的两个方面的成本和性能。
https://stackoverflow.com/questions/34808553
复制相似问题