Aerospike PHP客户端中的AND和GROUP BY

时间:2015-11-18 07:12:39

标签: php database aerospike

我目前正在检查aerospike取代我公司的MySQL数据库。目前,在MySQL中,我们有一个存储事务数据的表,表格如下:

+--------+------------+-----------+------------+-----+--------+
| trx_id | trx_date   | client_id | product_id | qty | total  |
+--------+------------+-----------+------------+-----+--------+
|      1 | 2015-01-01 |         1 |          1 | 100 | 100000 |
|      2 | 2015-01-02 |         2 |          2 | 200 | 200000 |
|      3 | 2015-01-03 |         3 |          3 | 300 | 300000 |
+--------+------------+-----------+------------+-----+--------+

对于报告,我们通常会执行以下操作:

SELECT MONTH(trx_date), SUM(qty), SUM(total) FROM transaction WHERE client_id = 1 AND product_id = 1 GROUP BY MONTH(trx_date)

获取客户的月度交易数据。

我已阅读Aerospike PHP客户端的文档,但我似乎找不到与ANDGROUP BYMONTH类似的内容。

那么,在Aerospike PHP客户端中,推荐的方法是什么?

感谢。

1 个答案:

答案 0 :(得分:3)

Aerospike是一个NoSQL键值存储,因此您不能指望使用SQL。但是,使用Lua作为用户定义函数(UDF)语言,可以扩展基本功能。

您要查找的是一个聚合,将here应用于查询结果。

有一个在PHP客户端文档中为stream UDF方法实现GROUP BY x HAVING的示例。要记住的是,您希望aggregate()查询尽可能多地消除记录,以便谓词应该用于'WHERE',而'AND'的二次过滤应该在流UDF内部进行过滤尽可能小的数据集。

阅读secondary index也会有所帮助。