Discussions

News: New DBMS published

  1. New DBMS published (36 messages)

    The creator of Hypersonic SQL has written a new database engine: H2. It's is written in Java, is free, source code is included. Available as Java library and as native executable (GCJ). JDBC and (partially) ODBC APIs are supported. Embedded and client/server mode, disk based or in-memory operation, a web console application is included. Clustering is supported as well.

    See: http://www.h2database.com

    Threaded Messages (36)

  2. New DBMS published[ Go to top ]

    Congrats.

    What is the differentiation for this product from other OS DB engines? I am sure it is good quality, but why might I need it instead of eg. Hypersonic or Derby?

    Kit
  3. New DBMS published[ Go to top ]

    The main differentiation is currently the cluster mode, ease of use and good encryption. First, I will try to implement the main features of HSQLDB / Derby / MySQL (making it compatible). Afterwards, the main difference should be (at least I hope): Performance (this includes startup performance, HSQLDB :-) and compatibility with 'big' databases such as MS SQL Server and Oracle.

    Thomas
  4. It would be intresting if you implement The Third Manifesto (Tutorial D)

    The sql databases have been implemented to death already.
    I do not think you can bring anything new in this field.
  5. H2 is just the base component, to be compatible with other databases. I think compatibility is key in the database market. I tried to make other things like NewSQL (http://newsql.sf.net) or LDBC (http://ldbc.sf.net), or JOR (http://jor.sf.net), but the problem with that is, nobody seems to be interested. Why work on something that nobody is interested in, if everybody is interested in databases? This is now my third database, and because databases are really boring, I hope this will be my last one :-)

    Thomas
  6. Replication?[ Go to top ]

    I wonder if there could be a replication function so that you have your main server and when you are on the road you work with the data you have copied and replicate it back to the server when back home. Like the sync they do here http://www.pointbase.com/products/unisync.aspx

    regards and keep up the good work


    sws
  7. Replication?[ Go to top ]

    I know UniSync very well, because I worked for PointBase (I made PointBase Micro and PointBase UniSync for Micro) :-)

    The problem with synchronization is, everybody wants to have a little bit different functionality. There is no 'good' standard, so compatibility with other databases is hard. I ratter implement some features to simplify others to implement their own synchronization (log file access, UPSERT/MERGE statement and so on) first.

    Thomas
  8. New DBMS published[ Go to top ]

    Very interesting. I look forward to giving it a whirl.

    What was your motivation for doing this versus helping with "H1"? Just curious.
  9. New DBMS published[ Go to top ]

    This code actually might be merged back to HSQLDB. That was my original idea.

    But: (and sorry if I hurt some feelings with this comments...) the HSQLDB code got very complex (too complex for me) and, from my point of view, 'patch style' (copy/paste/hack programming). Then, discussing design decisions with other developers (why do you implement your own parser? and so on) just takes too much time. I wrote H2 in my spare time (and a big part of it in the train where I was not online). Then, I don't want to maintain kilobytes of shell and ant scripts, writing documents in docbook. And I don't like an unclean looking product (sorry, just my feeling). All this got me thinking why discuss every detail with so many people, if I can run my own? Probably most people don't know the story with Axion (axion.tigris.org), it was similar than my story.

    Anyway, maybe H2 will be merged back to HSQLDB, but not now. I don't want to merge it at this time, that's one reason why I didn't make it GPL / LGPL / Apache style.

    Thomas
  10. New DBMS published[ Go to top ]

    Make it backwards compatible and call it HSQLDB 2.0!
  11. New DBMS published[ Go to top ]

    Make it backwards compatible and call it HSQLDB 2.0!

    H2 is actually (mostly) compatible with HSQLDB. I'm probably not allowed to call it HSQLDB 2.0 for legal reasons, and the guys developing HSQLDB would also not be very happy... There will probably be some kind of competition between H2 and HSQLDB, because they want to do what they want, and I want to do what I want. So it will be interesting to see how fast H2 can get (back?) the market share from HSQLDB :-)

    Thomas
  12. New DBMS published[ Go to top ]

    > Make it backwards compatible and call it HSQLDB 2.0!H2 is actually (mostly) compatible with HSQLDB. I'm probably not allowed to call it HSQLDB 2.0 for legal reasons, and the guys developing HSQLDB would also not be very happy... There will probably be some kind of competition between H2 and HSQLDB, because they want to do what they want, and I want to do what I want. So it will be interesting to see how fast H2 can get (back?) the market share from HSQLDB :-)Thomas
    Well, lets hope the Hummer people can tell the difference between a database and an SUV. :)
  13. New DBMS published[ Go to top ]

    Well, lets hope the Hummer people can tell the difference between a database and an SUV. :)

    Well, I hope I don't need to change the name (as with Phoenix / Firefird / Firefox). I think changes are good to keep the name because H2 Hummer does not have anything to do with software :-)
  14. License clarification[ Go to top ]

    This statement from the license page makes me nervous:
    However, H2 does currently _not_ use a traditional open source (GPL) license.

    Does that mean you're planning to change the license to GPL in the future?
  15. Serializable only?[ Go to top ]

    From the docs I made a conclusion it runs in Serializable Tx isolation mode ONLY. Why is that?
  16. Serializable only?[ Go to top ]

    From the docs I made a conclusion it runs in Serializable Tx isolation mode ONLY. Why is that?

    Time. I wanted to implement the most restrictive case first. As HSQLDB, the current version of H2 is weak on multi-connection issues, but I hope to fix that soon. The most urgent second transaction isolation level is probably the 'read uncommitted' mode (what do you think?). Then, HSQLDB plans to implement multi-version (Oracle style), and I will first try locking.

    Thomas
  17. Serializable only?[ Go to top ]

    It looks like 'read uncommitted' is a useless stuff ( cascading aborts). 'read committed' is popular as a good compromise for scalability ( more deadlock cases are possible with 'Serializable' ).
    But transaction isolation terms are useless for concurrency control algorythm development, this is a very good (scientific) book about this stuff:
    http://research.microsoft.com/pubs/ccontrol/
  18. Serializable only?[ Go to top ]

    BTW recovery is an important aspect too (if you are going to implement transactional database)
  19. Serializable only?[ Go to top ]

    BTW recovery is an important aspect too (if you are going to implement transactional database)

    The recovery of H2 is similar to ARIES. I hope ARIES is not patented any more? But recovery performance of H2 is currently not very good (but similar to HSQLDB), it needs to be improved.

    Thomas
  20. Serializable only?[ Go to top ]

    It looks like 'read uncommitted' is a useless stuff ( cascading aborts).

    It's good for compatibility with HSQLDB (and MySQL?), and for performance. It's for people who don't care about ACID but want to get the most performance.
    'read committed' is popular as a good compromise for scalability

    True. The priority for H2 is currently compatibility and performance on the low end (single user, Access, Embedded), so read committed will be implemented later.

    Anyway, thanks for the link! I downloaded the document and will read it.
  21. MVCC[ Go to top ]

    An MVCC implementation would be really cool (hopefully
    without using a vaccuum based design, like PostgreSQL
    or Firebird). Wonder why others don't do it exactly
    as Oracle (using the Undo log) - patent issues?
  22. MVCC[ Go to top ]

    Wonder why others don't do it exactlyas Oracle (using the Undo log) - patent issues?

    I don't think it's patent issues (at least for basic MVCC), but I'm not sure. Anyway, I think H2 will first get better locking (row level locking) before I play around with MVCC.

    Thomas
  23. MVCC[ Go to top ]

    An MVCC implementation would be really cool (hopefullywithout using a vaccuum based design, like PostgreSQLor Firebird). Wonder why others don't do it exactlyas Oracle (using the Undo log) - patent issues?

    The Oracle approach has its own issues and Firebird performs garbage collection on the fly - it just reuses the already allocated space. See http://www.firebirdsql.org/doc/whitepapers/fb_vs_ibm_vs_oracle.htm, though it has one error in it - according to Oracle people, it got its MVCC-ness in v 3.0, not in 7.x as written in the article.

    And by the way, MVCC in MS SQL Server 2005 is very similar to Firebird, not to Oracle.
  24. License clarification[ Go to top ]

    However, H2 does currently _not_ use a traditional open source (GPL) license.

    Alleluia! I'm so glad they're not using GPL. Quite frankly, I'd reather pay for software than have it wrestled to the ground by that viral nightmare of a license.

    Cheers,
    Clinton
  25. License clarification[ Go to top ]

    It is not planned to make H2 GPL in a way that the applications using it must be GPL (I'm not sure, but is this what MySQL is trying to do?). I don't want that others can make a fork of it at this time (I will have to make one exception to that, that is: when something happens to me so that I can't continue this project, it will get public domain). On the other hand, I currently don't want that the project is forked currently (I want to avoid another 'bungisoft' case).

    H2 should stay a free database, but I like to continue to develop it on my own currently. At some point (earliest in a year or two), I would like to make a little bit money with it, probably with support, so I can work on it part time / full time and not 'in my spare time' like now. I want to make sure this product will stay free forever for people who don't earn money with it. What I don't want to do is create a 'big' company like RedHat, JBoss or MySQL when H2 gets successful. But I don't know the business model at this time. One idea is: the license cost is some percentage of the taxes of a company. Something ethical. If somebody has an idea, please tell me.

    Thomas
  26. This looks like a really nice effort. I definitely like the web-based console. However, this seems to suffer from the same problem that HSQLDB does with Hibernate 3.x. It could be a Hibernate problem, but I doubt it since Hibernate can auto-create tables on all the databases I use (MySQL, PostgreSQL, DB2, Oracle).

    More info at:
    http://jroller.com/page/raible?anchor=hibernate_hbm2ddl_auto_and_hsql
  27. However, this seems to suffer from the same problem that HSQLDB does with Hibernate 3.x. It could be a Hibernate problem, but I doubt it since Hibernate can auto-create tables on all the databases I use (MySQL, PostgreSQL, DB2, Oracle).

    I doubt it is the exact same problem as HSQLDB, as H2 has a very different database file locking protocol. What do I have to do to reproduce the problem? Or do you have a stack trace / error message? Or maybe you can send me the log file when running it with tracing enabled. Just add this to the URL: ;TRACE_LEVEL_FILE=3;TRACE_LEVEL_SYSTEM_OUT=3 you will then get detailed trace information on the screen, and in the dbname.trace.db file. Example URL: jdbc:h2:test;TRACE_LEVEL_FILE=3;TRACE_LEVEL_SYSTEM_OUT=3

    P.S. TheServerSide seems to experience some problems today? Maybe they should use another database engine? ;-)
  28. Where are the databases stored?[ Go to top ]

    Where are the databases stored? I don't see a "data" directory.
  29. Where are the databases stored?[ Go to top ]

    Where are the databases stored? I don't see a "data" directory.

    If the base directory is not set, the database files are stored in the directory where the application is started (the current working directory). When using the H2 Console application from the start menu, this is [Installation Directory]/bin. The base directory can be set in the database URL. A fixed or relative path can be used. When using the URL jdbc:h2:file:data/sample, the database is stored in the directory data (relative to the current working directory). The directory must exist. It is also possible to use the fully qualified directory (and for Windows, drive) name. Example: jdbc:h2:file:C:/data/test
  30. Cool ![ Go to top ]

    I was just thinking the other day that the IT world needed another DBMS. I'm also waiting hopefully for a new spreadsheet engine, and maybe a new Web development framework.
  31. Cool ![ Go to top ]

    maybe a new Web development framework.

    There is actually a new web framework included in H2... No, just joking, the standalone web server is far from beeing a product.
    I'm also waiting hopefully for a new spreadsheet engine

    My guess is, the next spreadsheet and word processors will be web applications.

    Thomas
  32. Even more cool[ Go to top ]

    maybe a new Web development framework.
    There is actually a new web framework included in H2... No, just joking, the standalone web server is far from beeing a product.
    I'm also waiting hopefully for a new spreadsheet engine
    My guess is, the next spreadsheet and word processors will be web applications.Thomas

    That's good news. The current spreadsheet and word processing applications are all but unusable - there will be immeasurable business value in moving them to the Web.
  33. Problem with Schemas ?[ Go to top ]

    I want to test H2 for my UML-Repository Application but ein run in problems with users/schemas.

    I am not able to create a userer with admin rights (for creating the schema) !?

    There is a build in default admin user whith empty name and password bu how can i use him for creating a schema ?
    CREATE SCHEMA P1023 AUTHORIZATION '' does not work :-(

    Any help would be wellcome !
    Dirk
  34. Problem with Schemas ?[ Go to top ]

    There is a build in default admin user whith empty name and password

    There is no such default user 'built into the database', but you can create one (if you really want to), if you create a new database with empty user name and password, or by executing:

    CREATE USER "" PASSWORD '' ADMIN

    (the user name is double quoted because it's an object name, and the password is single quoted because it's a string)
    CREATE SCHEMA P1023 AUTHORIZATION '' does not work

    Does this work for HSQLDB? In H2, you should use double quotes for object names (the user name is an object name). Try:

    CREATE SCHEMA P1023 AUTHORIZATION ""

    (double quotes instead of single quotes)
  35. problem solved[ Go to top ]

    thanks Thomas, H2 works now.

    I changed the jdbc-settings and added the schema creation (wich derby does automatic) and my uml-repository is running fine on h2.
    It feels as fast as derby and the memory-usage apears a bit lower.

    Good work, it is fine to have one more good java-database option.

    Frohe Wheinachten und einen guten Rutsch
    Dirk
  36. Cache Chain Error[ Go to top ]

    Very Interesting database engine. I like the encrypt data base options.

    But there seems to be a little issue with H2's internal cache. I have a little routine that writes 20,000 records into a data base. When I run it using H2 jdbc connector, it gets an "cache chain error" when closing the connection "at org.h2.util.Cache.getAllChanged(Cache.java:143)". (That routine might need to run removeOld() before making it's list of changed objects? Or just remove the if maxSize check statement all together?)

    Wondering if you could help. Thanks, Kris

    PS - My test routine works if the number of records is 16,000 or less. I am running on Win XP, with 2GB of main memory using the jdbc connector with JVM 1.5
  37. Cache Chain Error[ Go to top ]

    But there seems to be a little issue with H2's internal cache.

    Yes this is a bug. I am currently building a new version where this and some other problems are fixed. It should be available later today.

    Thomas