Hi Erik,
all of your suggestions are more than welcome – this is why I posted your answer back to the mailing list. I invite all of you to give personal feedback!
A few questions for you about basex and plans...
- Can a database store files other than xml? xqy/xql, images, js, css, etc?
Our storage is currently limited to well-formed XML documents.
- Any plans to add collections or may basex does and I've overlooked it?
Yes, BaseX supports collections – as long as they are flat. Databases can store multiple single documents, which can be accessed e.g. by the XQuery collection() function. See also Section 4.4 in http://basex.org/faq.
- ReST interface: There are two approaches, both have their benefits and I would like to see both available:
a) The rest interface allows manipulating db resources: dbs, collections, files, users, permissions, etc. (The eXist db does this.) -The main advantage with this is an API easy to integrate into many environments b) The rest interface allows requests to be rewritten to a delegate xquery file to handle processing the http methods. (Some other db's provide this.) -This allows building complete applications within a database. -Would like to see this as the base approach with (a) as an internal implementation of (b) What are your thoughts?
Interesting ideas.. Some of our current interface features are be inspired by eXist. While GET and POST can be used to send XQuery/Update requests, PUT and DELETE will allow to modify database instances. Here is a simple example how a GET request could look like:
http://localhost:8080/rest/db/factbook?query=//country
Additionally, we will allow to send BaseX database commands via GET and POST..
http://localhost:8080/rest/db/factbook?command=optimize
This way, user management can be handled via REST as well. I'm not sure how users are modified in eXist via REST? Which other XML/REST implementations have you worked with?
- Any plans for webdav? This makes moving files in and out of the db easy for non-technical users. I've briefly looked at doing this with milton, apache jackrabbit, and from scratch.
- What do you think about using OSGI to enable plugging in db services? Bundles would be something like dbServer (the core service), tcpServer, restAdminServer, restServer, webdavServer, webAdmin, cliAdmin, monitorServer clusterServer, etc. This keeps the dbServer core code clean and small, yet allows other services to be developed and evolve independently. It also allows spinning up multiple instances of a server. For example, I could spin up multiple restServers or tcpServers on different ports to segment applications, or multiple webdav servers to partition content management per user/group rights.
- What do you think about moving to github? Looking for ways to grow basex community more quickly.
Good suggestions.. Let's see what everyone thinks about it!
Hope you don't mind me jumping in. I see a great product whose continued and expanded development is important to this industry.
You are welcome, Christian
___________________________
Christian Gruen Universitaet Konstanz Department of Computer & Information Science D-78457 Konstanz, Germany Tel: +49 (0)7531/88-4449, Fax: +49 (0)7531/88-3577 http://www.inf.uni-konstanz.de/~gruen