我目前正在将 GridDB 与 Oracle 19c 集成,用于数据密集型应用程序。目标是在 Oracle 中执行复杂的 ETL 流程和查询时,将一些时间序列数据存储在 GridDB 中。其中一个 Oracle 表已分区,包含超过 5 亿条记录。即使使用索引和分区,查询性能也明显低于预期。
这是我在 Oracle 19c 中运行的查询的简化版本,它也通过 API 从 GridDB 中提取数据:
SELECT t1.customer_name, t2.product_name, SUM(t1.amount), gdb.stock_price FROM transactions t1 JOIN products t2 ON t1.product_id = t2.product_id JOIN (SELECT * FROM TABLE(griddb_stock_price_api())) gdb ON t1.product_id = gdb.product_id WHERE t1.transaction_date BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD') GROUP BY t1.customer_name, t2.product_name, gdb.stock_price;
数据详细信息: 交易(Oracle):
customer_name:进行交易的客户的姓名。
product_id:所购买商品的ID。
amount:交易金额。
transaction_date:交易发生的日期(按日期划分)。
产品(Oracle):数据详情:
交易(Oracle):
customer_name:进行交易的客户的姓名。
product_id:所购买商品的ID。
amount:交易金额。
transaction_date:交易发生的日期(按日期划分)。
产品(甲骨文):
product_id:产品的ID。
product_name:产品的名称。
griddb_stock_price_api() (GridDB):此 API 函数从 GridDB 检索实时股票价格数据。
product_id:与股票价格挂钩的产品ID。
stock_price:产品的当前库存价格。
product_id:产品的ID。
product_name:产品的名称。
griddb_stock_price_api() (GridDB):此 API 函数从 GridDB 检索实时股票价格数据。
product_id:与股票价格挂钩的产品ID。
stock_price:产品的当前库存价格。