QuestDB 是一款开源的时序数据库,提供了超低延迟、高吞吐量和多层存储引擎,支持多种协议(如 InfluxDB 行协议、PostgreSQL 协议、REST API),并与许多工具和语言集成,非常适合金融市场数据、实时分析等场景。
QuestDB 近日发布重大版本 9.0,增加了 N 维数组、日历感知的物化视图 (materialized views)、提高了数据去重效率、实现了更智能的 JOIN,并重构了 Web 控制台的 UX。
下面介绍 QuestDB 9.0 值得关注的新特性。
- 支持 N 维数组
引入真正的 N 维数组(类似 NumPy 的数组),支持零拷贝切片、转置、累积操作和聚合,适用于市场数据订单簿深度或机器学习权重快照,目前支持 DOUBLE[]
类型,更多数据类型即将推出。
- 二进制行协议
支持二进制 DOUBLE[]
/ DOUBLE
协议,提升高吞吐量摄取效率,降低带宽使用,加快服务器端处理速度。
import pandas as pd
from questdb.ingress import Sender
df = pd.DataFrame({
'symbol': pd.Categorical(['ETH-USD', 'BTC-USD']),
'side': pd.Categorical(['sell', 'sell']),
'price': [2615.54, 39269.98],
'amount': [0.00044, 0.001],
'ord_book_bids': [
np.array([2615.54, 2618.63]),
np.array([39269.98, 39270.00])
],
'timestamp': pd.to_datetime(['2021-01-01', '2021-01-02'])})
conf = f'http::addr=localhost:9000;'
with Sender.from_conf(conf) as sender:
sender.dataframe(df, table_name='trades', at='timestamp')
- 升级物化视图
新增高效的 replace commit
机制、支持自 UNION
查询、延迟或推迟刷新,并引入三种新的视图刷新模式(TIMER
、MANUAL
和 PERIOD
),后者支持时区感知、日历调度的刷新。
- 优化数据去重
提高数据去重效率,新增优化以跳过未更改的数据,减少 I/O 开销。
import pandas as pd
from questdb.ingress import Sender
df = pd.DataFrame({
'symbol': pd.Categorical(['ETH-USD', 'BTC-USD']),
'side': pd.Categorical(['sell', 'sell']),
'price': [2615.54, 39269.98],
'amount': [0.00044, 0.001],
'ord_book_bids': [
np.array([2615.54, 2618.63]),
np.array([39269.98, 39270.00])
],
'timestamp': pd.to_datetime(['2021-01-01', '2021-01-02'])})
conf = f'http::addr=localhost:9000;'
with Sender.from_conf(conf) as sender:
sender.dataframe(df, table_name='trades', at='timestamp')
- 改进 Web 控制台
界面焕然一新,支持多行查询同时执行、查询日志记录,以及通过右键点击运行箭头获取查询计划,便于调试。
- ASOF JOIN with TOLERANCE
新增 TOLERANCE
参数,允许为匹配设置合理的时间范围,便于处理特定时间后“过期”的数据。
DECLARE
@level := insertion_point(bids[2], bid_volume),
@price := bids[1][@level]
SELECT
md.timestamp market_time,
@level level,
@price market_price,
cp.timestamp core_time,
cp.bid_price core_price
FROM(
core_price
WHERE timestamp IN today()
AND symbol = 'GBPUSD'
LIMIT -6
) cp
-- Match the bid to its nearest price within one second.
ASOF JOIN market_data md
ON symbol TOLERANCE 1s;
详情查看发布公告。