Dear Kenneth,
- Modules seems to be compiled on every request in the GUI.
currently, this is not only valid for the GUI, but for all execution modes of BaseX. Contrary to our fears, this turned out to be no show stopper for users, because the time for parsing and compiling queries has been optimized a lot. Of course this will not be true for all use cases, so you may need to choose a better modularization whenever compilation time threatens your plans.
Apart from that, however, future versions of BaseX will indeed provide a caching of already compiled modules, but it’s too early to give you an ETA.
- What are collections good for as opposed to storing documents
individually.
Collections are a must if you plan to store thousands or millions of documents in databases. Next, the query optimizer yields better results for queries that are focused on single databases.
I’m not sure but I think I’ve seen other XML databases use document collections for keeping automated track of document id’s – is there something similar for BaseX?
BaseX provides no such auto id feature. If you have more information on how this is realized in other xmldbs, feel free to give us a note. One potential alternative for incremental, dense document ids could be the usage of UUIDs or ms/ns timestamps.
How do you make sure that you are not overwriting documents with
stale data. Do you use locking attributes (optimistic locking)?
I’m not sure what you mean by that? BaseX uses readers-writer locks [1], maybe this helps?
- I like the idea of being able to reshape the data with greater ease
in the future, but at the same time it’s also a little scary to have data stored in a form that is not structured in terms of what values a field may take and so on.
This may be a matter of getting used to it, but I know what you mean. In most larger applications I’m aware of, validation is part of the business logic and e.g. ensured by the validation of input forms via XForms and other technologies. If you want to do schema validation before adding resources, the Validation Module is helpful [2].
Unfortunately I will also need binary storage (load/save files over http) for the particular application that we have under development/design and I’m not sure whether this is possible in the current release (I’ve read something about XQuery only being able to handle UTF8).
Yep, that’s possible; see e.g. [3] in our documentation, or browse for the keywords "binary" and "raw".
It’s a little hard to search the mailing list (have you considered a forum J) for questions regarding specific areas of interest, so I hope that my questions are not already answered 300 times in the past – and please forgive me if that’s the case…
Maybe the search function of mail-archive.com helps a little [4]. We thought about introducing a forum, but we wanted to avoid that there is no single target for requests. You may want to resort to StackOverflow, it also provides a "basex" tag [5].. or, of course, search engines.
It would be of great help if there was more information on how to get started with designing an application for BaseX. I mean, when you still think RDBM’s it’s not obvious how to navigate and find solutions within the BaseX paradigms. It might help to see a real world BaseX application, addressing a classic application preferably including handling of errors, transactions and locking.
Absolutely true. Any volunteers please stand up ;)
Christian
[1] http://docs.basex.org/wiki/Transaction_Management [2] http://docs.basex.org/wiki/Validation_Module [3] http://docs.basex.org/wiki/Binary_Data [4] http://www.mail-archive.com/basex-talk@mailman.uni-konstanz.de/ [5] http://stackoverflow.com/questions/tagged/basex