ODE
  1. ODE
  2. ODE-495

Implement ODE DAO directly by JDBC instead of JPA(OpenJPA) as a choice to improve performance dramaticly

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.2
    • Fix Version/s: 1.4
    • Component/s: BPEL Runtime
    • Labels:
      None
    • Environment:
      JAVA 5.0+

      Description

      Recently I've been testing ODE and tempo(modified) thoroughly, but it performed not too good, actually our customers even refuse to use it since their trades greatly exceed ODE's throughput. I am trying to make it perform better, and I tried many ways, filter ODE enevts,increase ODE-Server threads, increase database connections, increase integration layer threads, still it performs under our(customer's) expectation.

      Then I tried to use memdao to see what makes ODE slow down, I found memdao run at least 7~8 times faster than jpadao.So I deduce that database operation is critical to performance.We have two ways to solve this problem, do less database operations or make the operation faster(or both).Then I did a comparision between OpenJPA and JDBC,and I found JDBC perform almost ten times better than OpenJPA . Our clients don't care how we implement the system at all,what they really care is how good the system fulfills their business goals,what they really care is the system's stability and performance.Can we implement ODE DAO by JDBC to improve performance?

        Activity

        Shammy Chen created issue -
        Hide
        Alex Boisvert added a comment -

        Yes, you can implement the Ode DAOs with plain JDBC, or a lighter framework than JPA or Hibernate.

        Keep in mind, however, that in our testing the bottleneck was not the persistence framework, it was the amount of information persisted (write bandwidth) in the database. So even using plain JDBC you will likely experience similar overall performance if you persist the same amount of information.

        Show
        Alex Boisvert added a comment - Yes, you can implement the Ode DAOs with plain JDBC, or a lighter framework than JPA or Hibernate. Keep in mind, however, that in our testing the bottleneck was not the persistence framework, it was the amount of information persisted (write bandwidth) in the database. So even using plain JDBC you will likely experience similar overall performance if you persist the same amount of information.
        Hide
        Shammy Chen added a comment - - edited

        Compared to ActiveBpel, ODE does persist more information to database, that's perhaps the why of ActiveBpel performs better than ODE even if it still uses axis instead of axis2, it has less tables than ODE and less data to persist. Any way, we won't use ActiveBpel for its late responsiveness to SPECs(BPEL 1.1), we choose ODE for apache's code quality, large and active user community, and its free license.

        But in our multi-threaded load test, our oracle can do at least 6000 transactional insertions per second(almost reaches its write bandwidth limit) , when we persist data from ODE we can neither make oracle's CPU exhausted nor make its IO exhausted, there must be something that slows ODE down, perhaps JPA(and TransactionManager), or VPU.

        Now I am rewrting TEMPO using JDBC(and also made many other modifications) to see the effect, after that I will try to implement JDBC DAO and do load test again.

        Show
        Shammy Chen added a comment - - edited Compared to ActiveBpel, ODE does persist more information to database, that's perhaps the why of ActiveBpel performs better than ODE even if it still uses axis instead of axis2, it has less tables than ODE and less data to persist. Any way, we won't use ActiveBpel for its late responsiveness to SPECs(BPEL 1.1), we choose ODE for apache's code quality, large and active user community, and its free license. But in our multi-threaded load test, our oracle can do at least 6000 transactional insertions per second(almost reaches its write bandwidth limit) , when we persist data from ODE we can neither make oracle's CPU exhausted nor make its IO exhausted, there must be something that slows ODE down, perhaps JPA(and TransactionManager), or VPU. Now I am rewrting TEMPO using JDBC(and also made many other modifications) to see the effect, after that I will try to implement JDBC DAO and do load test again.
        Tammo van Lessen made changes -
        Field Original Value New Value
        Fix Version/s 1.3.5 [ 12314243 ]
        Tammo van Lessen made changes -
        Fix Version/s 1.4 [ 12315144 ]
        Fix Version/s 1.3.5 [ 12314243 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            Shammy Chen
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development