讨论 water huang · 四月 18, 2021 ensemble如何快速的插入或更新数据到第三方数据库?比如oracle #Ensemble 有时候 有这样的要求,ensemble需要把数据更新或插入到第三方数据库,逻辑:如果数据在第三方数据库不存在,就插入,如果存在就更新。那么有什么方案能批量 快读的完成这个操作呢?
Qiao Peng · 四月 18, 2021 我想您的问题涉及3个方面:1. 如何以SQL访问Ensemble的数据:Ensemble的数据可以通过SQL操作。因此第三方SQL数据库可以直接将Ensemble作为一个SQL数据库,通过XDBC访问Ensemble,并使用SQL获取数据。同样,Ensemble也可以通过link table直接操作第三方SQL数据库。2. 如何发现数据在第三方数据库不存在?这需要一些逻辑,例如通过时间戳、自增的ID等信息判断。3. 批量快读:听起来,不是要实时进行数据同步,而是要批量处理。批量处理可以使用多种方式:a. 小批量可以通过SQL输出适配器;b. 大批量可以绕过适配器/Production,直接以link table或其它方式处理,这样不需要产生消息,效率更高。
water huang 四月 21, 2021 to Qiao Peng 1.的确是以SQL访问的第三方数据库。2.每条数据有主键,通过主键判断在不在。3.其他方式比如kettle?,但是我需要消息。如果是保存在ensemble上 通过对象的方式很快的。
he hf · 四月 14, 2023 建议您可以使用兼容性比较好的数据ETL工具,结合我们实际的使用,推荐一款开源的 ETL 工具Kettle,纯 Java 编写,绿色无需安装,数据抽取高效稳定 (数据迁移工具)。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。
我想您的问题涉及3个方面:
1. 如何以SQL访问Ensemble的数据:
Ensemble的数据可以通过SQL操作。因此第三方SQL数据库可以直接将Ensemble作为一个SQL数据库,通过XDBC访问Ensemble,并使用SQL获取数据。
同样,Ensemble也可以通过link table直接操作第三方SQL数据库。
2. 如何发现数据在第三方数据库不存在?
这需要一些逻辑,例如通过时间戳、自增的ID等信息判断。
3. 批量快读:
听起来,不是要实时进行数据同步,而是要批量处理。批量处理可以使用多种方式:a. 小批量可以通过SQL输出适配器;b. 大批量可以绕过适配器/Production,直接以link table或其它方式处理,这样不需要产生消息,效率更高。
1.的确是以SQL访问的第三方数据库。2.每条数据有主键,通过主键判断在不在。3.其他方式比如kettle?,但是我需要消息。如果是保存在ensemble上 通过对象的方式很快的。
有的DBMS有upsert的功能。这样的话只要一个SQL语句处理insert跟update的情况。
谢谢
建议您可以使用兼容性比较好的数据ETL工具,结合我们实际的使用,推荐一款开源的 ETL 工具Kettle,纯 Java 编写,绿色无需安装,数据抽取高效稳定 (数据迁移工具)。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。