did you think about to use Qt for re-writing H2? On Fri, Apr 9, 2010 at 12:48 PM, Rami Ojares <[email protected]> wrote:
> Also a big thanks from me for sharing your experiences in such a clear > headed fashion. > There are people on this list who are interested to hear other people's > experiences about h2 codebase. > And to hear comparisons with other databases was most interesting! > > - rami > > > On 9.4.2010 10:15, James Gregurich wrote: > >> The key feature that attracted my attention was MVCC. Based on what I have >> read, that technique is what all the big boys are using to maximize their >> performance. I figured that approach would likely work well for my needs. >> >> I also spent time studying the source code for Firebird& Postgresql to >> see if I could adapt either of them to work as an embedded db. Neither >> project was coded very well. Firebird's code seemed fairly chaotic....though >> better than SQLite. PostgresSQL is fairly well-written, but has an >> insufficient level of abstraction. It's code is too married to the original >> way it was intended to run..namely a collection of processes that >> communicate via IPC. It would be a major effort to yank out all the IPC and >> replace it with normal mutexes and memory management. Firebird would be >> easier to adapt, but it was still not trivial because their code isn't well >> written. It is hard to trace through Firebird's code and figure out how it >> works. Firebird needs to be coded from scratch using modern C++ techniques. >> >> Finally, I'm doing commercial software with lots of proprietary IP....so >> anything GPL is poison....can't use it. >> >> H2's code is fairly well written and structured. Its easy to follow, >> understand and trace through. The license doesn't require me to make our >> core intellectual property public. So, It is the best choice IMO. >> >> I'd say the authors of H2 should have been more disciplined when coding, >> but overall, they did a good job. There tends to be a fair amount of >> redundant storing of references to objects. For instance, if a subclass >> needs a reference to an object and its parent already has a reference to >> that object, instead of reusing the parent's reference, the subclass stores >> a second reference to it. Also, there needs to be religious use of prefixes >> to distinguish data members, local variables and static variables from one >> another. naming variables like "newConnection" with no indication of scope >> makes code harder to read and understand. Also, I prefer better >> encapsulation of data members. I instruct my guys that only constructors, >> destructors and accessor functions may directly reference data members...all >> other member functions must go through accessors....its a little extra work >> up front to write accessors, but it generally pays for itself when you need >> to evolve the code later on. >> >> BTW: I did discover what I think is a race condition in SET EXCLUSIVE if >> multithreaded mode is on. It looked to me like you could end up with two >> sessions thinking they had exclusive access. However, that was in an older >> version of your code. You may have fixed that by now. I don't know yet. I >> just refreshed my copy of your repository today after many months. >> >> >> On Apr 8, 2010, at 11:47 PM, Sylvain Pointeau wrote: >> >> >> >>> Seems interesting, could you point on the issues in sqlite3 and compare >>> them with H2 and how H2 solved them? >>> >>> Best regards, >>> Sylvain >>> >>> >>> >> >> > > > -- > You received this message because you are subscribed to the Google Groups > "H2 Database" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<h2-database%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/h2-database?hl=en. > > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.
