Hi,
sorry for late reply, I was on holiday.

I wrote a few patches for H2 (NIO, soft reference cache, customized
indexing). I don't know theoretical SQL stuff, but Thomas's code is
really easy to follow and understand. It took me 4 hours in train to
understand most of code !!! Finding right location is just mather of
10 minutes debugging.

I consider H2 as best Java code I ever saw. Considering complexity of
problems it solves, number of features and incredible compactness of
code.
I really wish all programs would be written in the same way.

Jan

On Fri, Apr 9, 2010 at 11:48 AM, 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].
> 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.

Reply via email to