我使用官方PHP API SDK和" tomwalder / php-gds"与Google Datastore进行互动。
Google数据存储区(和GQL)非常适合我使用的99%的数据(少数列,一致的数据结构,数十亿行),除了一些查询。
我遇到的最大问题是将此SQL语句转换为GQL:
SELECT column_a, ROUND(SUM(column_b),0) as total_score, COUNT(column_a) as company_name
FROM companies
WHERE column_a <> '' AND column_c = '2015-05-30'
GROUP BY column_a
ORDER BY total_score desc;
如果GQL中没有ROUND,SUM或COUNT,则将数据缓冲到内存并使用PHP运行计算是唯一的选择吗? 每个查询有20MB的数据,它似乎不是最有效的途径。我真的不想迁移到BigQuery,因为我喜欢数据存储在读取数据时的响应能力。
答案 0 :(得分:0)
您无法使用数据存储区以便宜或轻松的方式使用聚合函数。
您需要以不同方式处理问题并在应用层中维护计数/总和等。
这是对传统(强大)MySQL灵活性的范式转换。
我个人一起使用。
CloudSQL,用于汇总和报告由我的应用层更新的数据。
P.S。感谢您使用PHP-GDS !!如果您想提出请求,我正在考虑向GitHub添加一些聚合辅助工具。
汤姆