我需要计算按不同标准分组的范围,并且希望将所有内容都保留在我的数据库中。我正在寻找 PostgreSQL 的预构建 bitset 实现,或者有关如何实现目标的指针。
我目前正在做的是将 EWAHCompressedBitSet 的序列化 Java 实例存储在 bytea 列中,但这意味着我必须往返于 Java 进程才能继续我的计算。
理想情况下,我希望能够执行以下操作:
-- Unique people reached during a time window
SELECT service_name, last_updated_at, bitset_or(followers_bs)
FROM followers
GROUP BY service_name, last_updated_at
Run Code Online (Sandbox Code Playgroud)
我使用了具有此类功能的商业解决方案(Truviso),它也是基于 PostgreSQL 的。
请注意,我确实有一个包含未压缩格式数据的表,但由于数据非常庞大(1000 万行并且还在计数),加入它所花费的时间比我想投入的时间要长。
Can you use the "bit"
type instead of "bytea"
, and use your own user-defined aggregate?
postgres=> CREATE AGGREGATE bitset_or ("bit")
postgres-> ( sfunc = bitor,
postgres-> stype = "bit",
postgres-> initcond = '0' );
Run Code Online (Sandbox Code Playgroud)
Now bitset_or
should work with your query as written (again, assuming bytea -> bit).
归档时间: |
|
查看次数: |
1439 次 |
最近记录: |