如何实现数据库变更订阅机制?适配多数据库与复杂查询需求
构建基于发布-订阅模式的数据库API需求与方案调研
核心需求
建立一种订阅关系:通过函数分析查询语句或查询结果,并根据结果执行对应代码块。此前调研仅找到专注异步编程的RxJS与Rx-Java。
期望实现效果
const query = 'update data (id, name) values (?,?)' const params = [1, 'data'] function foo (query, params) { const callback = async () => { const result = await DB.exec(query, params); } return callback; } function Observe(callback) { //emit changes in the database callback(); } Observe (foo(query, params))
现有方案的局限性
- 轮询
updated_at字段:仍需解决变更分析问题,且不适用于创建与删除查询。 - 现成ORM方案:无法适配复杂查询,也无法自动检测表结构变更。示例代码如下:
function update(model, {data: data}){ model.update({data: data}); //emit changes here }
寻求资源
同类问题的解决资料,或SQL编译相关文档。*注:虽提及SQL,但也会适配其他类型数据库。
内容的提问来源于stack exchange,提问作者med amine riahi
相关产品推荐
相关产品推荐

