Discussions

News: ObjectWeb announces JOnAS 3.1 and Clustered JDBC

  1. ObjectWeb open source consortium has announced the release of JOnAS 3.1 EJB server (now integrated with Axis), as well as Clustered JDBC (C-JDBC) an open-source database cluster middleware that allows any Java app to transparently access a cluster of databases through JDBC. C-JDBC offers various database replication techniques with different scheduling and load balancing algorithms.

    Checkout ObjectWeb.

    JOnAS 3.1 version provides some important features like making persistant the configuration done through the administration console, or the introduction of the JONAS_BASE concept for configuring several JOnAS instances from a same installation. The availability of Web Services by the integration of AXIS, the support of JMS 1.1, and the ability to store security user information in Databases or LDAP are also important features.

    C-JDBC offers database clustering techniques without application changes and works with any database (open source or commercial) providing a JDBC driver. C-JDBC offers various database replication techniques with different scheduling and load balancing algorithms. It relies on a concept called RAIDb (Redundant Array of Inexpensive Databases) that provides performance scalability and fault tolerance to databases like RAID does for disks.

    ObjectWeb President Christophe Ney will be speaking on the Open Source Keynote panel at TheServerSide Symposium, along with representatives from JBoss, Apache, Open Symphony, and Hibernate.

    Threaded Messages (16)

  2. The "RAIDb" concept of C-JDBC looks interesting. On the other hand, I find the RAIDb-1 configuration very feasible, cheap and well-performing (a gut feeling) way to protect against DB crashes. However, I am a bit doubtful about the true value of the RAIDb-0 configuration:

    1) Does parsing the incoming SQL for affected tables and mapping them to underlying drivers affect performance? And how is a query for tables in separate DB instances executed (i.e. SELECT t1.foo, t2.bar FROM TABLE1 t1, TABLE2 t2 WHERE t1.id = t2.id)?

    2) Is there real performance boost with distributing the tables (the database is already optimized for this) as you can always distribute the load with RAIDb-1?
  3. Table Joins[ Go to top ]

    1) Does parsing the incoming SQL for affected tables and mapping them to underlying drivers affect performance? And how is a query for tables in separate DB instances executed (i.e. SELECT t1.foo, t2.bar FROM TABLE1 t1, TABLE2 t2 WHERE t1.id = t2.id)?


    I suppose you would put all tables in a join into the same database instances, this would be useful if you had an application where one or two large queries across multiple tables were causing performance problems.

    You would be able to extract these queries to seperate machines and let them leverage more cpu.

    Ian Purton
    www.salesappliance.com
  4. Table Joins[ Go to top ]

    IMO: An attempt to do RDBMS job in JDBC driver is a very stupid thing to do.
    Have little respect to RDBMS theory (study it) and decades of design and development efforts. Study what ORACLE does to optimize performance within only one database and please do not waste efforts on “clustered” JDBC.
  5. Table Joins[ Go to top ]

    Ian,

    That's what I would do if it was possible. That's just plain intuitive. Heck, I could even use two completely independent databases if there was no dependencies between the two.

    What I was interested about was the feasibility and performance of the "distributed table join" functionality implied by C-JDBC.

    - Lasse
  6. Table Joins[ Go to top ]

    Check out Isocra LiveStore. It does the SQL parsing etc. and even handles clustered caching of underlying relational data.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Easily share live data across a cluster!
  7. Table Joins[ Go to top ]

    Thanks Cameron, LiveStore does look good.
  8. C-JDBC & Caching[ Go to top ]

    Note that C-JDBC does also request parsing and caching. It allows for fine grain and distributed caching between distributed controllers. But this is just a side feature ... the cherry on top of the cake! ;-)
  9. RAIDb-0 exists because C-JDBC is part of a research project and we had to test this configuration but it is more likely that it will never be used in real world applications.<br>
    We did some testing and RAIDb-0 does not provide significant performance benefits on most applications. The current implementation does not support distributed joins, therefore if you have a join between t1 and t2, you have to ensure that both t1 and t2 are on the same machine. This is a strong constraint but as you mentioned, RAIDb-1 and even better RAIDb-2 are more interesting configurations.
    The cost of request parsing is quite low because we don't do a complete parsing of the request like the database does. We just extract the table names to direct the table and don't evaluate all fields. We also have a parsing cache that prevents parsing twice the same query.
  10. RAIDb-0 is interesting not for performance, but for the possibilities to join 2 tables in 2 different DB like Heterogenous Service in ORACLE or MS Sql Server or Liked table in Access.
    I have old ERP application on HP-Eloquence DB (ODBC-Bridge) and i want to develop new feature on OpenSource DB , but i can't rewrite all ERP on new DB...
    then I would like to join 2 table on 2 DB for rewrite progressively all the application.

    Excuse me for my poor english.
  11. SELECT T1.* , T2.zz
    FROM T1_IN_DB1 T1 left outer join T2_IN_DB2 T2 on T1.aa=T2.bb

    Such kind of widely used query will require join operation on the client, means:
    1.fetch all data from both tables on client.
    1.1 SELECT * FROM T1_IN_DB1
    1.2 SELECT * FROM T2_IN_DB2
    2. compute join.
  12. Jonas server does not even start[ Go to top ]

    I could not even get jonas to start properly. I used the download that comes bundled with tomcat. I get the following exception.

    C:\jonas-3-1\examples\src>2003-05-03 23:19:32,889 : RegistryManager.start : Regi
    stry started on port '1099'
    2003-05-03 23:19:32,920 : ServiceManager.startRegistry : registry service starte
    d
    JOnAS error: Cannot start JMX service: javax.management.ReflectionException: The
     MBean class could not be loaded by the MBeanServer's loader
    JOnAS halting
  13. too easy![ Go to top ]

    This error message seems sparkling clear : your rmi registry (I guess that you do not use JEREMIE, this would not change the problem anyway) is already started, and your config says that JOnAS must start it.

    So you have 2 solutions :

    1) stop your RMI registry and start JOnAS
    2) configure JOnAS to use a previously started registry

    ... and enjoy!
  14. It seems that the MX4J JMX server fails to start ...(suppose you made no changes to the provided configuration).
    Can you please make a 'jonas check' and echo your CLASSPATH (it should not be set).
    You may also use jonas at objectweb dot org to discuss with the JOnAS developpers and community.
  15. Reliability?[ Go to top ]

    DB request distribution, and replication is a rather tricky holy grail to attain. C-JDBC looks interesting on paper, but can ObjectWeb provide any reference customers for this? I'd be curious how it holds up in real environments.

    Peter
    http://rimuhosting.com/?s=ss - JSP/EJB (on JBoss) Hosting Specialist
  16. Reliability?[ Go to top ]

    C-JDBC is still in alpha version and has no real customer. We did a complete evaluation using the TPC-W benchmark on a 6 nodes cluster and performance scales linearly up to 6 nodes with both browsing and shopping mixes (speedup of 5.7 with the ordering mix).<br>
    A paper will be released soon with all results but it has been submitted for publication to a conference and we are not allowed to publish it before the notification of acceptance.
  17. Hi Jonas-Team,

    I'm very glad to say, that after more than one week
    experience on our production environment with Jonas 3.1 - Jetty 4.2.9,
    I'm absolutely amazed by the stability and performance
    of this package!!

    THIS IS BY FAAAAR THE BEST VERSION OF JONAS WITH A WEBCONTAINER
    WE EVER HAD !!!!!!!!! (we were going all the way since
    2.2, 2.4, 2.4.4 and 2.6.4)

    Thanks to you guys and also to the Jetty-people ! Great Work !!!

    Bye,

    Stephan

    PS: We upgraded from Jonas 2.6.4/Jetty 2.4.6, where we had to restart
    the application at least twice a week because of a memory leak, which
    now is gone!!!