0

我正在使用 Drools 引擎,但仅限于实施方面。框架是为我设置的,我只能使用规则方面(我希望我能够解释自己)。

那就是说-我的问题是我正在尝试将大约 100 万行从 Oracle DB 加载到 WM 中,并且我发现此任务花费的时间太长,这是我用来加载对象的规则:(顺便说一句 - 请求将百万记录加载到 WM 中是强制性的,因为我需要使用这些 DB 对象作为我的规则的一部分以及在运行时注入引擎的其他对象)

规则“Load_CMMObject”显着性 10 无循环

when

    not CMMObjectShouldBeRefreshed() over window:time( 1500m )

then
    log("Fetching Load_CMMObject");
    ExecutionContext ctx = getExecutionContext();


      String getObjectTypeSQL = "select AID , BC_OBJECT_ID , ALR_EQP_NAME , ALR_FROM_SITE from CMM_DB.COR_EQP_VW";
    PreparedStatement pStmt = null;

    try {

        pStmt = MTServiceAccessor.getDBAccessService().prepareNativeStatement(ctx, getObjectTypeSQL, false);
        ResultSet rs = pStmt.executeQuery();
        while (rs.next()) {

            String aid  = rs.getString(1);
            int objectID = rs.getInt(2);
            String  eqpName = rs.getString(3);
            String fromSite = rs.getString(4);


            CMMObject cmmObject = new CMMObject();

            cmmObject.setIp(aid);
            cmmObject.setObjectID(objectID);
            cmmObject.setEqpName(eqpName);
            cmmObject.setFromSite(fromSite);


            insert(cmmObject);
            //log("insert  Object --->  " + cmmObject.getIp());
                            }
        log("Finish Loading All cmm_db.BCMED_EQP_VW");
    } catch (Exception e) {
        log("Failed to Load ServiceName_TBL" + e);
    } finally {
        if (pStmt != null) {
            try {
                pStmt.close();
            } catch (Exception e) {
                log("Failed to close pstmt");
            }
        }
    }

    //log(" finished loading trails into the WM1");
    CMMObjectShouldBeRefreshed cMMObjectShouldBeRefreshed = new       CMMObjectShouldBeRefreshed();
    //log(" finished loading trails into the WM2");
    insert (cMMObjectShouldBeRefreshed);
    //log("finished loading trails into the WM3");

结尾

我正在使用为 Drools 引擎分配大约 20Gb RAM 的服务器,它有 8 个 1.5GHZ 四核处理器。

问题是我大约需要 1 分钟才能加载 5000 个原始数据 -> 所以如果我想从数据库加载 100 万条记录,我需要 200 分钟才能完成任务,这太多了。

我会很感激这里的任何帮助,

多谢!

4

0 回答 0