Hello the BaseX team,
First of all I'm
really impressed with the quality of the BaseX XML database. I'd
particularly highlight the high compliance with the standards XQuery,
XPath and the outstanding performance! Thank you very much for the great
product!
I'm new to the system and I've faced
several configuration deficiencies while trying to configure the BaseX
database to fit my needs. What follows is my use case (I hope it is a
basic and classical one required by much wider audience), the
configuration problems I've faced (I hope these can be easily solved by
extending your current implementation) and my proposal to solve the
above mentioned configuration problems (I hope this will further improve
the quality of your product).
My use case (access the basexserver run as a systemd service via the basexclient)
- I've installed the basex package on Manjaro (Arch linux) into /usr/share/java/basex/
- I
want to run the basexserver as a systemd service under the already
created basex system user (see the attached basex.server unit file)
- I want to store the XML databases and the BaseX logs under /var/lib/basex/data /var/lib/basex/log respectively
- I
want to manage the basexserver configuration (namely DBPATH, LOGPATH,
SERVERPORT) separately from the basexclient configuration (namely HOST,
PORT, USER, PASSWORD) in a separate files under /etc/basex and ~/
respectively. I do not want to get my configuration overwritten with
unnecessary default options that are already in the system and so
clutter my clean just-what-you-need configuration files
- I
want to manage the XML databases and execute queries against the server
using the basexclient from my console by providing XQuery command and
queries in a file
Configuration problems (mixed config for client and server in a single .basex file under hardly linked home directory)
- My
.basex file mixes server and client configuration in one single file so
I cannot separate the configuration into server-related at /etc/basex
and client-retated at ~/
- My .basex file gets overwritten with unnecessary default options that clutter my minimal and clean configuration
- When
I start the basexclient a new .basex configuration file is created in
the current working directory. I start the basexclient from many
different direcotries, but I want to have the basexclient configuration
only in my home ~/ directory
- It seems that the location of the
.basex file is hardly linked to the home directory forcing me to place
data, log and config directories under a single home directory. I want
to manage my data in /var/lib/basex/data, my logs in /var/lib/basex/log
and my server and client configuration in /etc/basex and ~/ respectively
- I
cannot find any way (via environment variables or command line options)
to instruct both the basexserver and the basexclient to look for the
configuration file .basex
Proposal to improve configuration
- Do
not overwrite the user-provided configuration files with unnecessary
default options that are already in the system or at least use a
different file (e. g. .basex-default)
- Separate the
server-related configuration from the client-related configuration into
different files (e. g. .basexserver, .basexclient)
- Do not
mandate the location of configuration files to be under the home
directory because there are different aspects of database management
that are usually managed in different directories with different
policies and quotas (e. g. data, log, client and server config)
- Provide
separate options for basexserver and basexclient to locate the
corresponding configuration file (e. g. via environment variables
BASEX_SERVER_CONFIG, BASEX_CLIENT_CONFIG or command line options
-server-config, -client-config)
- In order to introduce the
proposed improvement you can keep your current implementation unchanged
(following the open-closed principle) and just extend the implementation
with the alternative locations for the separate configuration files via
environment variables or command line options. The only change that is
required is to stop overwriting the user-provided configuration files
with the default options
Can the above described use case be configured with the current implementation of the configuration management?
Thank
you in advance! I'm open to further discussion and collaboration mostly
on the design side to get these improvements to work for all other use
cases not covered here.
Thank you,
Vlad