On Jun 26, 2009, at 10:26 AM, Nikunj R. Mehta wrote:
As a side note, it should be noted Berkeley DB itself could not be
used by WebKit or Gecko to implement the spec, because even though
it is open source, the license is not compatible with the LGPL. It
seems unlikely that non-open-source browser engines could use it
either, unless they are willing to pay Oracle for a commercial
license. So it's very important for the spec to be clear and
detailed, because everyone will have to implement it from scratch.
Huh? what? I hope you had read Oracle's BDB license document [3] and
open source FAQ [4]. IANAL, but I can get answers for your specific
concerns in the context of open source Berkeley DB. AFAICT, someone
like Mozilla would not face any trouble with the open source license
of Berkeley DB. YMMV.
I read the license. By my reading, it imposes requirements that go
beyond WebKit's LGPL license or Gecko's BSD/GPL/LGPL tri-license: <http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html
>. Specifically clause 3 of the license.
It's also not clear to me if a BDB-level API is sufficient for
developer needs. As I understand it, it's basically a giant
dictionary with unstructured keys and values. So it's not providing
much over LocalStorage, except for prefix matching and the ability
to hold large amounts of records or records that are individually
large. There's no way to efficiently query by one of several
fields, as I understand it.
I trust that you are relatively new to storing data with B-trees.
They are at the heart of Oracle's indices so efficiency is out of
question. If you are wondering how can people store complex data
items with multiple fields and repeating values, look at Berkeley DB
Java Edition, which supports the EJB 3 persistence model [5]. FYI,
there is no significant difference between the APIs of BDB Java
Edition and the original BDB. They also have identical licensing
requirements.
Your references do not appear to explain on a technical level how one
stores data with multiple fields in a way that you can query
efficiently by more than one of them. I would appreciate a brief
explanation.
Regards,
Maciej
P.S. I would appreciate if you could discuss technical matters without
mock incredulity or condescension.