From: <de...@in...> - 2011-06-10 13:57:29
|
Hello all First, thanks for providing such a great realization from the open source community. eXist-DB seem to me to be an undiscovered gem :) Since I am new to practical XML databases and eXist-DB in particular allow me to recount my experiences and trouble to get a good feeling of the inner logic and suitability to my purpose of the database. I may be wrong but I think there is two main uses for such a tool : A] a complete "web" development stack where everything is XML from data to logic to user interface, think couchDB (and NOSQL like) minus replication ten years before the rage :) B] a powerful XML database with rich XML queries capabilities 'I' need B], the website and surrounding community seems to be geared toward A] :), correct me if I am wrong ;) The only thing is, I suspect most people would be first interested in B], need to get to grip with lots of XML concepts and produce some "structured AND battle tested" content before eventually moving to A] :) (I personally don't think writing code in XML syntax is efficient or pleasurable and it raises dozens of questions about version control, tooling and such but that is another debate) A potential consequence of this, but a factual problem for me was that I could not find "useful" documentation and I am still puzzled by eXist-DB logic and "good use practice" more upon that a bit later. For instance the "getting started" is very useful but does not go beyond "starting" the DB. After that the "article link" refer to a resource that is supposedly bundled with eXist-DB but is not working (http://demo.exist-db.org/exist/articles) and the documentation browser is broken. It may be in those resources that I would have found more "intermediate to advanced" material but right now I have few things available after "getting-started" and before the technical API documentation or tips and tricks. Here are the kind of questions that are "blocking me" and seems to me a logical progression : - what is a library : i.e. is it a partition of the documents, simply an index feature or something that is meta information that I can use to organize and retrieve my documents : Is it a purely technical feature or an organizational tool (I hope the later I guess the former) ?. - eXist-DB seems to have a "flat" document namespace and it seems so strange to me that I guess I am wrong but I don't know ... : If I use eXide or eulcore.existdb (a python XML-RPC wrapper to access eXist) to query "//SPEECH/*" eXist happily answer me with all elements in all documents everywhere in the database regardless of collections , luckily only documents in the Shakespeare\plays collection happpen to have such an element . Is that what really happens ? Because as soon as I let the "mondial" collection inside my database and then load up a bunch of XML "invoices" for instance, a query like "//country" will surely bring strange and mixed results in :) (it is highly probably that I wanted to query the <country> elements from the addresses in my invoice collection but I then also got the <country> top level elements of the mondial collection of document. I could of course use XML name-spaces to differentiate the two but in that case, even supposing I have control on the invoice XML format and schema (not a given) I don't have control on the mondial collection of documents (or she Shakespeare one and so on and so on) So what is eXist-DB strategy to be able to manage collection and query one collection or another an such ? - what is the status of documents inside eXist-DB ? are they first class citizen and second level organizational tools, or just "happen to be wrapper for a bunch of elements" ? For instance I evaluate eXist-DB to be the back end of the multi-part collaborative document creation tool : several people create **parts** or a bigger document that must conform to a schema (the parts and the global one), the global one is at the same time partly a real document with some proper content and metadatas, and at the same time partly a container of the other documents (it references them and is displayed and edited like it aggregates the parts seamlessly) So the "parts" document and the "whole/global" documents all exists in the database. Is eXist-DB aware of that and does its API allow me to access documents individually ? Or am I supposed to map them through DNS and URLs (meaning it is not portable, transferable, relative linkable and testable in isolation) to give them identity. Writing this I realize that both questions ends up to some common implication : can the collection and document name be used to "extent" the root path in some way ;) : /collection/documentname/ROOT_ELEMENT/... - What is a "mod" ? ;) - and a few more ;) Thanks a lot for your time and sorry for the probably dumb question :) PS: while I am at it, there is a very small error in the window startup script, at least the one from SVN : line 46 : set BATCH.D="%EXIST_HOME%\bin\batch.d" is illegal having a dot in the BATCH.D name cause trouble. BATCHD is fine though ;) Patch : Index: startup.bat =================================================================== --- startup.bat (révision 14663) +++ startup.bat (copie de travail) @@ -43,9 +43,9 @@ set JAVA_ENDORSED_DIRS="%EXIST_HOME%"\lib\endorsed set JAVA_OPTS="-Xms128m -Xmx512m -Dfile.encoding=UTF-8 -Djava.endorsed.dirs=%JAVA_ENDORSED_DIRS%" -set BATCH.D="%EXIST_HOME%\bin\batch.d" -call %BATCH.D%\get_opts.bat %* -call %BATCH.D%\check_jmx_status.bat +set BATCHD="%EXIST_HOME%\bin\batch.d" +call %BATCHD%\get_opts.bat %* +call %BATCHD%\check_jmx_status.bat "%JAVA_HOME%\bin\java" "%JAVA_OPTS%" -Dexist.home="%EXIST_HOME%" -jar "%EXIST_HOME%\start.jar" jetty %JAVA_ARGS% :eof |