
A MonetDB database instance manages a single database on a single system. It is perfectly possible to have multiple database instances run concurrently on a single system, but its resource claim may negatively affect the performance perceived.
All instances on a system are governed by a MonetDB deamon process. It provides a single point of access to any of the database instances locally, but also to those running in a local network. The deamon process ensures automatic (re) start of database instances when users request access, it can act as a proxy for clients, it can transparently handle fail-over and it can exploit data-parallel processing.
The MonetDB/SQL tutorial is based on the material published in the book J.R. Bruijn, F.S. Gaastra and I. Schaar, Dutch-Asiatic Shipping in the 17th and 18th Centuries, which gives an account of the trips made to the East and ships returned safely (or wrecked on the way). A total of 8000 records are provided. They include information about ship name and type, captain, the arrival/departure of harbors along the route, personnel accounts, and anecdotal information.
Get going quickly on Linux involves starting the MonetDB daemon monetdbd, code name meriovingian. It runs in the background and facilitates, amongst others, management of local/remote servers. The daemon is controlled by the application monetdb. See its documentation for all details. Here we demonstrate a simple session involving creation of a database, loading data, and querying (Windows is described at the end).
shell> monetdbd create /path/to/mydbfarmshell> monetdbd start /path/to/mydbfarmshell> monetdb create vocshell> monetdb release voc
shell> mclient -u monetdb -d voc
password:<monetdb>
Welcome to mclient, the MonetDB/SQL interactive terminal (Aug2011-SP2)
Database: MonetDB v11.5.4, 'voc'
Type \q to quit, \? for a list of available commands
auto commit mode: on
sql>select 'hello world';+---------------+
| single_value |
+===============+
| hello world |
+---------------+
1 tuple (0.530ms)
sql>
The command \q or end-of-file <Ctrl-d> signal terminates the connection with the server.
Exploring the wealth of functionality offered by MonetDB/SQL is best started using a toy database. For this we use the VOC database which provides a peephole view into the administrative system of an early multi-national company, the Vereenigde geoctrooieerde Oostindische Compagnie (VOC for short - The (Dutch) East Indian Company) established on March 20, 1602. Download the VOC data set voc.sql.gz (519K) [1] bz2 (371K) [2] which is a compressed file with SQL statements. After the file has been extracted, load its contents into MonetDB using mclient.
Before you load the VOC data set, it is advised to introduce a user different from the omnipresent default monetdb. The new user is given his own schema for the MonetDB database. Assuming you have started MonetDB with SQL module, proceed as follows:shell> mclient -u monetdb -d voc
password:<monetdb>
sql>CREATE USER "voc" WITH PASSWORD 'voc' NAME 'VOC Explorer' SCHEMA "sys";
sql>CREATE SCHEMA "voc" AUTHORIZATION "voc";
sql>ALTER USER "voc" SET SCHEMA "voc";
sql>\q
To illustrate the use of the newly created account and schema, the following example connects and creates a table, which is dropped afterwards by aborting the transaction.
shell> mclient -u voc -d voc;
password:<voc>
sql>START TRANSACTION;
sql>CREATE TABLE test (
more> id int,
more> data varchar(30)
more> );
sql>\d
+------+
| name |
+======+
| test |
+------+
sql>\d test
CREATE TABLE "voc"."test" (
"id" int,
"data" varchar(30)
);
sql>ROLLBACK
Importing the voc_dump.sql file into the database can be done using the textual client interface. Some alternative ways are as follows:
1:
shell> mclient -u voc -d voc voc_dump.sql
password:<voc>2:
shell> mclient -u voc -d voc < voc_dump.sql
password:<voc>
3:
shell> mclient -u voc -d voc
password:<voc>
sql> \< voc_dump.sql
The VOC data set contains data for around 8000 voyages.
sql>\d
+------------+
| name |
+============+
| craftsmen |
| impotenten |
| invoices |
| passengers |
| seafarers |
| soldiers |
| total |
| voyages |
+------------+
sql>select count(*) from voyages;
+--------+
| count_ |
+========+
| 8115 |
+--------+
The set consists of 8 tables, which are all bound to each other using FOREIGN KEY relationships. The voyages table is the main table, which all others refer to. Every table, except invoices has a PRIMARY KEY defined over the columns number and number_sup. Since the invoices table holds zero or more invoices per voyage (identified by number, number_sub) a PRIMARY KEY constraint is not possible. The tables craftsmen, impotenten, passengers, seafarers, and soldiers all share the same columns. We can define a VIEW that combines them all into one big table, to make them easier to access.sql>CREATE VIEW onboard_people AS
more>SELECT * FROM (
more>SELECT 'craftsmen' AS type, craftsmen.* FROM craftsmen
more>UNION ALL
more>SELECT 'impotenten' AS type, impotenten.* FROM impotenten
more>UNION ALL
more>SELECT 'passengers' AS type, passengers.* FROM passengers
more>UNION ALL
more>SELECT 'seafarers' AS type, seafarers.* FROM seafarers
more>UNION ALL
more>SELECT 'soldiers' AS type, soldiers.* FROM soldiers
more>UNION ALL
more> SELECT 'total' AS type, total.* FROM total
more> ) AS onboard_people_table;
sql>
The new view will show up and we can just use it as a normal table, to for instance calculate the number of records for each group of people:sql>\d
+----------------+
| name |
+================+
| craftsmen |
| impotenten |
| invoices |
| onboard_people |
| passengers |
| seafarers |
| soldiers |
| total |
| voyages |
+----------------+
sql> SELECT type, COUNT(*) AS total
more> FROM onboard_people GROUP BY type ORDER BY type;
+------------+-------+
| type | total |
+============+=======+
| craftsmen | 2349 |
| impotenten | 938 |
| passengers | 2813 |
| seafarers | 4468 |
| soldiers | 4177 |
| total | 2454 |
+------------+-------+
sql> select count(*) from impotenten;
+--------+
| count_ |
+========+
| 938 |
+--------+
It is possible to play with the set in many ways, to find out several things that took place during the voyages of the ships, or the money that was earned. A few examples are shown below:sql>SELECT COUNT(*) FROM voyages
more>WHERE particulars LIKE '%_recked%';
+--------+
| count_ |
+========+
| 358 |
+--------+
sql> SELECT chamber, CAST(AVG(invoice) AS integer) AS average
more> FROM invoices
more> WHERE invoice IS NOT NULL
more> GROUP BY chamber
more> ORDER BY average DESC;
+---------+---------+
| chamber | average |
+=========+=========+
| A | 282996 |
| Z | 259300 |
| H | 150182 |
| R | 149628 |
| D | 149522 |
| E | 149518 |
| null | 83309 |
+---------+---------+
sql>CREATE VIEW extended_onboard AS
more>SELECT number, number_sup, trip, trip_sup,
more> onboard_at_departure, death_at_cape,
more> left_at_cape, onboard_at_cape,
more> death_during_voyage, onboard_at_arrival,
more> death_during_voyage - left_at_cape AS death_at_arrival
more>FROM onboard_people;
WINDOWS
On Windows the first step is to initialize a MonetDB server by simply clicking: 'Start' -> 'Programs' -> 'MonetDB ' -> 'Start server'. Subsequently you can start the textual interface by clicking 'Start'->'Programs'->MonetDB'->'SQL client' . The commands entered there are identical to those found on other platforms. To stop the server, you can simply close the MonetDB SQL Server window. Note the server by default only accepts connections originating from the local host. If you need other machines to access your database, change the configuration file by setting mapi_open=yes.
The graphical user interfaces based on JDBC connectivity provide an alternative client interface. See Squirrel and dbvisualiser installation pages for details.
Exploring the wealth of functionality offered by MonetDB/SQL is best started using a toy database. For this we use the VOC database which provides a peephole view into the administrative system of an early multi-national company, the Vereenigde geoctrooieerde Oostindische Compagnie (VOC for short - The (Dutch) East Indian Company) established on March 20, 1602.
Download the VOC data set voc.sql gz (519K) [1] bz2 (371K) [2] which is a compressed file with SQL statements. After the file has been extracted, load its contents into MonetDB using the mclient.exe file, located in the C:\Program Files\CWI\MonetDB5\bin.
Starting a MonetDB database is as simple as starting the deamon program monetdbd, also known by its previous code name merovingian. At the time of this writing, monetdbdis only available on UNIX-like platforms. The MonetDB daemon program encapsulates an arbitrary number of database servers, and takes care of their configuration. The general concept of the MonetDB daemon program is that it builds upon a given directory, often referred to as the dbfarm. There can be at most one instance of monetdbd monitoring such dbfarm, but multiple monetdbd processes can be running on the same system.
In the simple case, monetdbd is started by the system through some init script, and databases are created by the local DBA, and assigned to users. A more flexible approach for users, however, is the case where a user runs monetdbd itself. Because a dbfarm can be anywhere in the filesystem, and needs nothing more than just being an ordinary directory, a user can use monetdbd to initialise his/her own dbfarm in an accessible place. For example:
% monetdbd create ~/my-dbfarm
% monetdbd get all ~/my-dbfarm
property value
hostname vomac.ins.cwi.nl
dbfarm /Users/fabian/my-dbfarm
status no monetdbd is serving this dbfarm
mserver unknown (monetdbd not running)
logfile merovingian.log
pidfile merovingian.pid
sockdir /tmp
port 50000
exittimeout 60
forward proxy
discovery true
discoveryttl 600
control no
passphrase <unknown>
mapisock /tmp/.s.monetdb.50000
controlsock /tmp/.s.merovingian.50000
After creation of the personal dbfarm directory, the get command can be used to inspect the dbfarm-wide settings of the newly created environment. Note that the above output differs per system, per user and per dbfarm. Important setting is the port to use to open up services for clients. In particular for a user installation, these often may conflict with another running monetdbd, hence it is wise to change these to a private port in situations where such conflicts may arise:
% monetdbd set port=54321 ~/my-dbfarm
% monetdbd get all ~/my-dbfarm
property value
hostname vomac.ins.cwi.nl
dbfarm /Users/fabian/my-dbfarm
status no monetdbd is serving this dbfarm
mserver unknown (monetdbd not running)
logfile merovingian.log
pidfile merovingian.pid
sockdir /tmp
port 54321
exittimeout 60
forward proxydiscovery truediscoveryttl 600
control no
passphrase <unknown>
mapisock /tmp/.s.monetdb.54321
controlsock /tmp/.s.merovingian.54321
Note that control defaults to no. For remote control connections, control has to be set to yes, and a passphrase has to be set as well. When set, it will show as a hash in get's output.
When the settings look ok, the next step is to simply start monetdbd:
% monetdbd start ~/my-dbfarm
If the above command returned without any message, the monetdbd process was successfully started. The logfile (default merovingian.log) should show that the daemon has started, bound some ports, and discovered itself.
From this part on, monetdbd can be given commands through the monetdbcommand (without the trailing 'd'). The monetdb client utility knows commands much like monetdbd, but it is much more focussed towards giving information about what is going on inside monetdbd. The monetdb client utility is the main tool to use to manage the dbfarm.
The dbfarm we created is empty, as such there are no databases inside it. With monetdb we can create a new database:
% monetdb create my-first-db
created database in maintenance mode: my-first-db
This simple command created the necessary bits inside the dbfarm for a database called my-first-db. It is created in maintenance mode, since otherwise anyone could access it before it is properly setup. If the command gives an access-denied error, most probably another monetdbd is running on the system. In that case try adding -p54321(the port) as arguments to monetdb in order to tell it which monetdbd to contact as in the status example. In the status view of monetdb the newly created database will show up as a locked database:
% monetdb -p54321 status
name state uptime health
my-first-db locked
Albeit the database is locked, it can be started, such that the monetdb superuser can access the database:
% monetdb start my-first-db
starting database 'my-first-db'... done
% monetdb status
name state uptime health
my-first-db locked 18s 100%, 0s
The database remains locked, but the uptime field indicates the database is actuallty running. If setting up the database is ready, the database can be made available for other users (if any, see VOC demo [3]) to connect to it using the release command:
% monetdb release my-first-db
taken database out of maintenance mode: my-first-db
% monetdb status
name state uptime health
my-first-db running 2m 48s 100%, 0s
Next thing, making a connection to the database using mclientrequires the -dargument to specify which database to connect to. It will ask for username and password when none given or provided via a .monetdb file. The default username/password is monetdb/monetdb:
% mclient -dmy-first-db
user(fabian):monetdb
password:<monetdb>
Welcome to mclient, the MonetDB/SQL interactive terminal (Dec2011-SP1)
Database: MonetDB v11.7.7 (Dec2011-SP1), 'mapi:monetdb://vomac.ins.cwi.nl:54321/my-first-db'
Type \q to quit, \? for a list of available commands
auto commit mode: on
sql>
Like for the monetdb command, if this fails with some database does not exist error, try giving the port (not the controlport!) to mclient such that it finds the correct monetdbd, e.g.:
% mclient -p54321 -dmy-first-db
It may be necessary to stop individual databases, or even make them unavailable. The monetdb commands stopand lockcan perform these tasks. To completely stop the monetdbd daemon process for a dbfarm, stop it using the stop command of monetdbd:
% monetdbd stop ~/my-dbfarm
This should stop the monetdbd and all the databases that are started inside it. To verify that monetdbd has indeed stopped, review the end of the merovingian.log file. It should report all databases being shut down, and the deamon shutting down.
mclient − the MonetDB command-line tool
mclient [ options ] [ file or database [ file ... ] ]
mclient −−help
MonetDB is a database management system that is developed from a main-memory perspective with use of a fully decomposed storage model, automatic index management, extensibility of data types and search accelerators, SQL- and JAQL- frontends.
mclient is the command-line interface to the MonetDB server.
If the −−statement=query (−s query) option is given, the query is executed. If any files are listed after the options, queries are read from the files and executed. The special filename − refers to standard input. Note that if there is both a −−statement option and filename arguments, the query given with −−statement is executed first. If no −−statement option is given and no files are specified on the command line, mclient reads queries from standard input.
When reading from standard input, if standard input is a terminal or if the −−interactive (−i) option is given, mclient interprets lines starting with \ (backslash) specially. See the section BACKSLASH COMMANDS below.
Before mclient starts parsing command line options, it reads a .monetdb file. If the environment variable DOTMONETDBFILE is set, it reads the file pointed to by that variable instead. When unset, mclient searches for a .monetdb file in the current working directory, and if that doesn’t exist, in the current user’s home directory. This file can contain defaults for the flags user, password, language, save_history, format and width. For example, an entry in a .monetdb file that sets the default language for mclient to mal looks like this: language=mal. To disable reading the .monetdb file, set the variable DOTMONETDBFILE to the empty string in the environment.
General Options
−−help (−?)
Print usage information and exit.
−−version (−v)
Print version information and exit.
−−encoding=encoding (−E encoding)
Specify the character encoding of the input. The option applies to both the standard input of mclient and to the argument of the −−statement (−s) option but not to the contents of files specified on the command line (except for − which refers to standard input) or files specified using the \< command (those must be encoded using UTF-8). The default encoding is taken from the locale.
−−language=language (−l language)
Specify the query language. The following languages are recognized: mal and sql. A unique prefix suffices. When the −−language option is omitted, the default of sql is assumed.
−−database=database (−d database)
Specify the name or URI of the database to connect to. The -d can be omitted if an equally named file does not exist in the current directory. As such, the first non-option argument will be interpreted as database to connect to if the argument does not exist as file. Valid URIs are as returned by ‘monetdb discover‘, see monetdb(1), and look like mapi:monetdb://hostname:port/database.
−−host=hostname (−h hostname)
Specify the name of the host on which the server runs (default: localhost). When the argument starts with a forward slash (/), host is assumed to be the directory where the UNIX sockets are stored for platforms where these are supported.
−−port=portnr (−p portnr)
Specify the portnumber of the server (default: 50000).
−−interactive[=timermode] (−i[timermode])
When reading from standard input, interpret lines starting with \ (backslash) specially. See the section BACKSLASH COMMANDS below. This is the default if standard input is a terminal. The optional timermode argument controls the format of the time reported for queries. Note that no space is allowed between −i and timermode. The default mode is human which adjusts the time precision to the measured value. The modes ms, s and m force millisecond, second and minute + second precision respectively.
−−user=user (−u user)
Specify the user to connect as. If this flag is absent, the client will ask for a user name, unless a default was found in .monetdb file. Note that user must follow immediately after the option.
−−format=format (−f format)
Specify the output format. The possible values are sql, csv, tab, raw, and xml. csv is comma-separated values, tab is tab-separated values, raw is no special formatting (data is dumped the way the server sends it to the client), sql is a pretty format which is meant for human consumption, and xml is a valid (in the XML sense) document. In addition to plain csv, two other forms are possible. csv=c uses c as column separator; csv+c uses c as column separator and produces a single header line in addition to the data.
−−echo (−e)
Echo the query. Note that using this option slows down processing.
−−history (−H)
Load and save the command line history (default off).
−−log=logfile (−L logfile)
Save client/server interaction in the specified file.
−−statement=stmt (−s stmt)
Execute the specified query. The query is run before any queries from files specified on the command line are run.
−−timezone (−z)
Do not tell the client’s timezone to the server.
−−Xdebug (−X)
Trace network interaction between mclient and the server.
−−pager=cmd (−| cmd)
Send query output through the specified cmd. One cmd is started for each query. Note that the | will have to be quoted or else the shell will interpret it.
SQL Options
−−null=nullstr (−n nullstr)
Set the string to be used as NULL representation when using the sql, csv, or tab output formats. If not used, NULL values are represented by the string "null" in the sql output format, and as the empty string in the csv and tab output formats. Note that an argument is required, so in order to use the empty string, use −n "" (with the space) or −−null=.
−−autocommit (−a)
Switch autocommit mode off. By default, autocommit mode is on.
−−rows=nr (−r nr)
If specified, query results will be paged by an internal pager at the specified number of lines.
−−width=nr (−w nr)
Specify the width of the screen. The default is the (initial) width of the terminal.
−−dump (−D)
Create an SQL dump.
−−inserts (−N)
Use INSERT INTO statements instead of COPY INTO + CSV values when dumping the data of a table. This option can be used when trying to load data from MonetDB into another database, or when e.g. JDBC applications are used to reload the dump.
General Commands
|
\? |
Show a help message explaining the backslash commands. |
||
|
\q |
Exit mclient. |
\< file
Read input from the named file.
\> file
Write output to the named file. If no file is specified, write to standard output.
\| command
Pipe output to the given command. Each query is piped to a new invocation of the command. If no command is given, revert to writing output to standard output.
|
\h |
Show the readline(3) history. |
\L file
Log client/server interaction in the given file. If no file is specified, stop logging information.
|
\X |
Trace what mclient is doing. This is mostly for debugging purposes. |
||
|
\e |
Echo the query in SQL formatting mode. |
\f format
Use the specified format mode to format the output. Possible modes the same as for the −−format (−f) option.
\w width
Set the maximum page width for rendering in the sql formatting mode. If width is −1, the page width is unlimited, when width is 0, use the terminal width. If width is greater than 0, use the given width.
\r rows
Use an internal pager using rows per page. If rows is −1, stop using the internal pager.
SQL Commands
|
\D |
Dump the complete database. This is equivalent to using the program msqldump(1). |
\D table
Dump the given table.
|
\d |
Alias for \dvt. |
\d[Stvsfn]+
List database objects of the given type. Multiple type specifiers can be used at the same time. The specifiers S, t, v, s, f and n stand for System, table, view, sequence, function and schema respectively. Note that S simply switches on viewing system catalog objects, which is orthogonal on the other specifiers.
\d[Stvsfn]+ object
Describe the given object in the database using SQL statements that reconstruct the object. The same specifiers as above can be used, following the same rules. When no specifiers are given, vt is assumed. The object can be given with or without a schema, separated by a dot. The object name can contain the wildcard characters * and _ that represent zero or more, and exactly one character respectively. An object name is converted to lowercase, unless the object name is quoted by double quotes ("). Examples of this, are e.g. *.mytable, tabletype* or "myschema.FOO". Note that wildcard characters do not work in quoted objects. Quoting follows SQL quoting rules. Arbitrary parts can be quoted, and two quotes following each other in a quoted string represent the quote itself.
|
\A |
Enable auto commit mode. |
|||
|
\a |
Disable auto commit mode. |
Efficiently import data from a CSV (comma-separated values) file into a table. The file must be readable by the server. $file is the absolute path name of the file, $table is the name of the table, $db is the name of the database.
mclient -d $db -s "COPY INTO $table FROM ’$file’ USING DELIMITERS ’,’,’\\n’,’\"’"
Efficiently import data from a CSV file into a table when the file is to be read by mclient (e.g. the server has no access to the file). $file is the (absolute or relative) path name of the file, $table is the name of the table, $db is the name of the database.
mclient -d $db -s "COPY INTO $table FROM STDIN USING DELIMITERS ’,’,’\\n’,’\"’" - < $file
Note that in this latter case, if a count of records is supplied, it should be at least as large as the number of records actually present in the CSV file. This, because otherwise the remainder of the file will be interpreted as SQL queries.
See http://www.monetdb.org/Documentation/Manuals/SQLreference/CopyInto [4] for more information about the COPY INTO query.
msqldump(1) [5]
monetdb − control a MonetDB Database Server instance
monetdb [monetdb_options] command [command_options] [command_args]
monetdb allows an administrator of the MonetDB Database Server to perform various operations on the databases in the server. It relies on monetdbd(1) running in the background for all operations.
monetdb_options affect all commands and control the general behaviour of monetdb.
|
−q |
Supresses all standard progress messages, only writing output to stderr if an error occurred. |
−h hostname
Connect to hostname instead of attempting a connection over the local UNIX socket. This allows monetdb to connect to a remote monetdbd(1). The use of this option requires −P (see below).
−p port
Connects to the given portnumber instead of the default (50000). Requires −h to be given as option too.
−P passphrase
Specifies the passphrase necessary to login to a remote monetdbd(1). This option requires −h to be given as well. A bad passphrase causes monetdb to fail to login, and hence fail to perform any remote action.
|
−v |
Show version, equal to monetdb version. |
The commands for the monetdb utility are create, destroy, lock, release, status, start, stop, kill, set, get, inherit, discover, help and version. The commands facilitate adding, removing, maintaining, starting and stopping a database inside the MonetDB Database Server.
For all commands, database arguments can be glob-like expressions. This allows to do wildcard matches. For details on the syntax, see EXPRESSIONS.
create [−m pattern] database [database ...]
Initialises a new database in the MonetDB Database Server. A database created with this command makes it available under its database name, but not yet for use by clients, as the database is put into maintenance mode. This allows the database administrator to perform initialisation steps before releasing it to users. See also monetdb lock. The name of the database must match the expression [A−Za−z0−9−_]+.
−m pattern
With the −m flag, instead of creating a database, a multiplex-funnel is created. See section MULTIPLEX-FUNNEL in monetdbd(1). The pattern argument is not fully the same as a pattern for connecting or discovery. Each parallel target for the multiplex-funnel is given as username+password@pattern sequence, separated by commas. Here the pattern is an ordinary pattern as would be used for connecting to a database, and can hence also be just the name of a database.
destroy [−f] database [database ...]
Removes the given database, including all its data and logfiles. Once destroy has completed, all data is lost. Be careful when using this command.
|
−f |
By default, a confirmation question is asked, however the −f option, when provided, suppresses this question and removal is executed right away. Note that you cannot destroy a running database, bring it down first using the stop command. |
lock database [database ...]
Puts the given database in maintenance mode. A database under maintenance can only be connected to by an administrator account (by default the monetdb account). A database which is under maintenance is not started automatically by monetdbd(1), the MonetDB Database Server, when clients request for it. Use the release command to bring the database back for normal usage. To start a database which is under maintenance for administrator access, the start command can be used.
release database [database ...]
Brings back a database from maintenance mode. A released database is available again for normal use by any client, and is started on demand. Use the lock command to take a database under maintenance.
status [−lc] [−s states] [database ...]
Shows the state of the given database, or, when none given, all known databases. Three modes control the level of detail in the displayed output. By default a condensed one-line output per database format is used. This output resembles pretty much the output of various xxxstat programs, and is ideal for quickly gaining an overview of the system state. The output is divided into four columns, name, state, health and remarks. The state column contains two characters that identify the state of the database, based on Booting (starting up), Running, Stopped, Crashed and Locked (under maintenance). This is followed by the uptime when running. The health column contains the percentage of successful starts and stops, followed by the average uptime. The remarks column can contain arbitrary information about the database state, but usually contains the URI the database can be connected to.
|
−c |
The −c flag shows the most used properties of a database. This includes the state of the database (running, crashed, stopped), whether it is under maintenance or not, the crash averages and uptime statistics. The crash average is the number of times the database has crashed over the last 1, 15 or 30 starts. The lower the average, the healthier the database is. |
||
|
−l |
Triggered by the −l flag, a long listing is used. This listing spans many rows with on each row one property and its value separated by a colon (‘:’). The long listing includes all information that is available. |
||
|
−s |
The −s flag controls which databases are being shown, matching their state. The required argument to this flag can be a combination of any of the following characters. Note that the order in which they are put also controls the order in which the databases are printed. b, r, s, c and l are used to print a starting up (booting), started (running), stopped, crashed and locked database respectively. The default order which is used when the −s flag is absent, is rbscl. |
start [−a] database [database ...]
stop [−a] database [database ...]
kill [−a] database [database ...]
Starts, stops or kills the given database, or, when −a is supplied, all known databases. The kill command immediately sends a SIGKILL and should only be used as last resort for a database that doesn’t respond any more. Killing a database may result in (partial) data loss. It is more common to use the stop command to stop a database. It will first attempt to stop the database, waiting for mero_exittimeout seconds and if that fails, kill the database. When using the start command, monetdb(1) will output diagnostic messages if the requested action failed. When encountering an error, one should always consult the logfile of monetdbd(1) for more details. For the kill command a diagnostic message indicating the database has crashed is always emitted, due to the nature of that command. Note that in combination with −a the return code of monetdb(1) indicates failure if one of the databases had a failure, even though the operation on other databases was successful.
get <all | property[,property[,..]]> [database ...]
Prints the requested properties, or all known properties, for the given database. For each property its source and value are printed. Source indicates where the current value comes from, e.g. the configuration file, or a local override.
set property=value database [database ...]
Sets property to value for the given database. For a list of properties, run monetdb get all. Most properties require the database to be stopped when set.
shared=<yes|no|tag>
Defines if and how the database is being announced to other monetdbds or not. If not set to yes or no the database is simply announced or not. Using a string, called tag the database is shared using that tag, allowing for more sophisticated usage. For information about the tag format and use, see section REMOTE DATABASES in the monetdbd(1) manpage. Note that this property can be set for a running database, and that a change takes immediate effect in the network.
nthreads=<number>
Defines how many worker threads the server should use to perform main processing. Normally, this number equals the number of available CPU cores in the system. Reducing this number forces the server to use less parallelism when executing queries, or none at all if set to 1.
optpipe=<string>
Each server operates with a given optimiser pipeline. While the default usually is the best setting, for some experimental uses the pipeline can be changed. See the mserver5(1) manpage for available pipelines. Changing this setting is discouraged at all times.
readonly=<yes|no>
Defines if the database has to be started in readonly mode. Updates are rejected in this mode, and the server employs some read-only optimisations that can lead to improved performance.
nclients=<number>
Sets the maximum amount of clients that can connect to this database at the same time. Setting this to a high value is discouraged. A multiplex-funnel may be more performant, see MULTIPLEX-FUNNEL below.
inherit property database [database ...]
Like set, but unsets the database-local value, and reverts to inherit from the default again.
discover [expression]
Returns a list of remote monetdbds and database URIs that were discovered by monetdbd(1). All databases listed can be connected to via the local MonetDB Database Server as if it were local databases using their database name. The connection is redirected or proxied based on configuration settings. If expression is given, only those discovered databases are returned for which their URI matches the expression. The expression syntax is described in the section EXPRESSIONS. Next to database URIs the hostnames and ports for monetdbds that allow to be controlled remotely can be found in the discover list masked with an asterisk. These entries can easily be filtered out using an expression (e.g. "mapi:monetdb:*") if desired. The control entries come in handy when one wants to get an overview of available monetdbds in e.g. a local cluster. Note that for monetdbd to announce its control port, the mero_controlport setting for that monetdbd must be enabled in the configuration file.
|
−h |
help [command]
Shows general help, or short help for a given command.
|
−v |
version
Shows the version of the monetdb utility.
For various options, typically database names, expressions can be used. These expressions are limited shell-globbing like, where the * in any position is expanded to an arbitrary string. The * can occur multiple times in the expression, allowing for more advanced matches. Note that the empty string also matches the *, hence "de*mo" can return "demo" as match. To match the literal ’*’ character, one has to escape it using a backslash, e.g. "\*".
The monetdb utility returns exit code 0 if it successfully performed the requested command. An error caused by user input or database state is indicated by exit code 1. If an internal error in the utility occurs, exit code 2 is returned.
monetdbd(1) [6] mserver5(1) [7]
monetdbd − the MonetDB Database Server daemon
monetdbd command [command_args] dbfarm
monetdbd is the MonetDB Database Server daemon. The program is mainly meant to be used as daemon, but it also allows to setup and change the configuration of a dbfarm. The use of monetdbd is either as user-oriented way to configure, start and stop a database farm, or to be started from a startup script, such as from /etc/init.d/ on Linux systems or smf(5) on Solaris systems, as part of a system startup.
monetdbd is the system formerly known as merovingian. It was renamed to monetdbd since the name merovingian proved to be confusing to most regular end-users. Internally, monetdbd uses the name merovingian at many places for historical reasons.
A monetdbd instance manages one local cluster based, which is a directory in the system, referred to as the dbfarm. Nowadays, the dbfarm location always has to be given as argument to monetdbd.
Within its local cluster monetdbd takes care of starting up databases when necessary, and stopping them either upon request via monetdb(1) [8] or when being shut down. Client database connections are made against monetdbd initially which redirects or proxies the client to the appropriate database process, started on the fly when necessary.
When started, monetdbd runs by default in the background, sending log messages to merovingian.log, until being sent a stop, terminate or interrupt signal, possibly using the stop command of monetdbd.
monetdbd uses a neighbour discovery scheme to detect other monetdbd processes running in the local network. Databases from those remote instances are made available to a locally connecting client. Remote databases never override local databases, and their availability is controlled by the remote monetdbd process. See also the sharing capabilities of monetdb(1) [8] and the REMOTE DATABASES section below.
The commands for monetdbd are create, start, stop, get, set, version, and help. The commands facilitate initialising a dbfarm, starting and stopping the MonetDB Database Server, and retrieving or setting options.
create dbfarm
Initialises a new database farm, such that a MonetDB Database Server can be started on that location. All necessary directories are attempted to be created, and an initial properties file is created in the directory itself. dbfarm must be a location addressable in the local filesystem hierarchy.
start [-n] <dbfarm>
Starts monetdbd, the MonetDB Database Server, on the given dbfarm. When the -n flag is given, monetdbd will not fork into the background, but instead remain attached to the calling environment, until given a stop signal.
stop <dbfarm>
Sends a stop signal to the monetdbd process responsible for the given dbfarm.
get <all | property[,property[,..]]> <dbfarm>
Prints the requested properties, or all known properties, for the given dbfarm. For each property, its value is printed. Some properties are virtual, and given for information purposes only, they cannot be modified using the set command.
set property=value <dbfarm>
Sets property to value for the given database. For a list of properties, run monetdbd get all. Some properties require a restart of the MonetDB Database Server in order to take effect. The set command, will however always write the property, and tell the running monetdbd to reload the properties file (if running). For an explanation of the properties, see the CONFIGURATION section below.
monetdbd reads its properties from the .merovingian_properties file inside the dbfarm. This file is created by the create command. This file is not meant to be editted manually, instead it should be updated using the set command. The following properties can be set:
logfile
This property points to the file where all log messages are written to. It is relative to the dbfarm directory, but can be absolute to point to e.g. another medium. Changing this property takes effect immediately at runtime.
pidfile
monetdbd stores the process ID of the background server in the file pointed to by this property. The same rules apply as for the logfile property.
sockdir
For faster access, monetdbd uses UNIX domain sockets for its control mechanism and regular database connections. The sockets are placed as files in the filesystem hierarchy. The sockdir property controls in which directory they are placed. In general this setting should not be changed.
|
port |
This property specifies which TCP port monetdbd should listen to for connection requests. Defaults to 50000. |
control
For remote management of monetdbd, the control property specifies whether or not to enable remote management. Note that for remote management, a passphrase is required, see below. It defaults to false for security reasons. Changing this property takes effect immediately at runtime.
passphrase
To control monetdbd from a remote machine, a passphrase is necessary, to be given to monetdb(1) [8]. The passphrase can be either given as hashed value prefixed by the hash type in curly braces (e.g. {SHA512}xxx...) or as plain text value which will be hashed automatically. Note that the only hash accepted is the one specified at configure time, which is SHA512. Changing this property takes effect immediately at runtime.
discovery
Specifies whether neighbour discovery is to be enabled using UDP broadcasts or not. The broadcasts are done on the same portnumber as the port setting.
discoveryttl
monetdbd publishes locally available databases to others periodically. The interval used here, defined in seconds, depends on the time-to-live of the databases before they need to get refreshed. The default is 600 seconds (10 minutes), which should keep traffic in your network fairly low. Additions and removals are processed immediately regardless of this timeout. If you are in a network environment where physical network links disappear often, you may want to decrease this value to more quickly remove no longer reachable databases.
exittimeout
mservers that were started by the MonetDB Database Server are shut down when monetdbd is shut down. Setting the exittimeout property to a positive non-zero value will shut down each running mserver with the given time-out in seconds. If the time-out expires, the mserver process is killed using the SIGKILL signal. A time-out value of 0 means no mservers will be shut down, and hence they will continue to run after monetdbd has shut down. Note that this particular configuration is extremely inconvenient. The default time-out is 60 seconds. If your databases are rather large and find your databases consistently being killed by monetdbd upon shutdown, you may want to increase this time-out. Changing this property takes effect immediately at runtime.
forward
monetdbd has two ways in which it can "attach" a connecting client to the target database. The first method, redirect, uses a redirect sent to the client with the responsible mserver process. The second method, proxy, proxies the client to the mserver over monetdbd. While redirect is more efficient, it requires the connecting client to be able to connect to the mserver. In many settings this may be undesirable or even impossible, since a wide range of open ports and routing are necessary for this. In such case the proxy technique of monetdbd is a good solution, which also allows a monetdbd instance on the border of a network to serve requests to nodes in the local (unreachable) network. Note that for local databases, the proxy method uses a UNIX domain socket feature to pass file-descriptors to the local mserver. This effectively is as efficient as the redirect approach, but still hides away the mservers properly behind monetdbd. Hence, in practice it is only relevant for connections to remote databases to use redirects instead of proxies. Changing this property takes effect immediately at runtime.
The neighbour discovery capabilities of monetdbd allow a user to contact a remote database transparently, as if it were a local database. By default, all local databases are announced in the network, such that neighbours can pick them up to make them available for their local users. This feature can be disabled globally, or on database level. For the latter, the monetdb(1) [8] utility can be used to change the share property of a database.
While neighbour discovery in itself is sufficient to locate a database in a cluster, it is limited in expressiveness. For instance, database names are assumed to be unique throughout the entire system. This means local databases overshadow remote ones, and duplicate remote entries cannot be distinguished. To compensate for this, monetdbd allows to adds a tag to each database that is being shared. This tag is sent in addition to the database name, and only understood by other monetdbds.
Tags are arbitrary ASCII-strings matching the pattern [A−Za−z0−9./]+. There are no assumed semantics in the tag, which allows for multiple approaches when using the tag. The tag is always used in combination with the database name. For this, the ‘/’ character is used as separator, which hence suggests the user to use that character as separator for multilevel tags. monetdbd allows common path globbing using ‘*’ on tags, which allows for many use-cases. Consider for instance the following three databases with their tag:
dbX/master/tableQ
dbY/slave/tableQ
dbZ/slave/tableQ
A default match has implicit ‘/*’ added to the search, making more generic search strings match more specific ones. Hence, a connect with database dbX is the same as dbX/* and hence matches dbX/master/tableQ. Similar, a database connect for */master matches the same database as before. Note that the implicit ‘/*’ is not added if that would cause no matches, such as for */master/tableQ which would return all masters for tableQ, which in our hypothetical example is only dbX. In contrast, a database connect for */slave/tableQ matches with either dbY or dbZ. monetdbd returns the two options to the client in a round-robin fashion, such that subsequent connects for the same pattern result in a load-balanced connect to either of both databases.
With tags in use, one can possibly make distinction between databases, if setup like that. The previous example could hence also be setup like this:
tableQ/master
tableQ/slave
tableQ/slave
Connecting to tableQ/slave would now return either of both databases even though they are not unique (apart from the host they are located on, which is not shown in the example). While being confusing for humans, for monetdbd it is the same situation as in the previous example. However, because globbing allows to make things easier to understand, tags for both slaves could be changed to slaveX or slave/X and use the necessary pattern to match them. It is up to the user to decide how to use the tags.
monetdbd implements multiplex-funnel capabilities. As the name suggests two techniques are combined, the multiplexer and the funnel.
The funnel capability limits the access to the database to one client at a time. That is, if multiple clients connect to the funnel, their queries will be serialised such that they are executed one after the other. An effect of this approach is that clients no longer have an exclusive channel to the database, which means that individual queries from one client may have been interleaved with queries from others. This most notably makes SQL transaction blocks unreliable with a funnel. The funnel, hence, is meant to scale down a large amount of clients that perform short-running (read-only) queries, as typically seen in web-based query loads.
When a funnel is defined to use multiple databases, the funnel adds a multiplexer to its query channel. A multiplex-funnel sends each query to all of the defined databases. This behaviour can be quite confusing at first, but proves to be useful in typical sharding configurations, where in particular simple selection queries have to be performed on each of the shards. The multiplexer combines the answers from all defined databases in one single answer that it sends back to the client. However, this combining is without any smart logic, that is, the multiplexer does not evaluate the query it is running, but just combines all answers it receives from the databases. This results in e.g. as many return tuples for a SELECT COUNT(*) query, as there are databases defined.
Due to the two above mentioned characteristics, a multiplex-funnel has some limitations. As mentioned before, transactions over multiple queries are likely not to result in the desired behaviour. This is due to each query to the funnel is required to be self-contained. Further, since for each query, the results from multiple servers have to be combined into one, that query must only return a single response, i.e. multi-statement queries are most likely causing the funnel to respond with an error, or return garbled results. Last, the size of each query is limited to currently about 80K. While this size should be sufficient for most queries, it is likely not enough for e.g. COPY INTO statements. Apart from the data transfer implications, such statements should not be used with the funnel, as the results will be undefined due to the limited query buffer. Applications using the funnel should aim for short and single-statement queries that require no transactions.
See the create command in the monetdb(1) [8] man-page for details on how to setup a multiplex-funnel.
monetdbd acts upon a number of signals as is common for a daemon.
SIGINT, SIGTERM, SIGQUIT
Any of these signals make monetdbd enter the shutdown sequence. This sequence involves cleanly shutting down listener sockets, shutting down all started databases and finally terminating itself.
|
SIGHUP |
When this signal is received by monetdbd it will reopen the logfile as pointed to by the logfile setting. Before it reopens the logfile, it will re-read the properties file from the dbfarm, which might result in opening a different file to continue logging. |
monetdbd returns exit code 0 if it was able to successfully perform the requested action, e.g. start, stop, etc. When an error occurs during the action, that prevents monetdbd from successfully performing the action, the exit code 1 is returned.
monetdb(1) [8] mserver5(1) [7]
mserver5 − the MonetDB server version 5
mserver5 is the current MonetDB server that performs all processing on request of clients for a certain database.
Note that while mserver5 is the process that does the actual work, it is usually more common to start, monitor and connect to the mserver5 process through monetdbd(1) [6].
This man-page describes the options that mserver5 understands. It is intended for people who really need to work with mserver5 itself. In regular cases, the programs monetdbd(1) [6] and monetdb(1) [8] control the many options, and allow to adjust them to appropriate values where sensible. For normal usage, it is preferred to apply any configuration through these programs.
When the build-time configuration did not disable this, a mserver5 process presents the user with a console prompt. On this prompt, MAL commands can be executed. The architecture is setup to handle multiple streams of requests. The first thread started represents the server, which is the console prompt, reading from standard input and writing to standard output.
The server thread started remains in existence until all other threads die. The server is stopped by Ctrl-D on its console, typing quit() or by sending it a termination signal (SIGINT, SIGTERM, SIGQUIT).
mserver5 can be started with options and scripts as arguments. The MAL scripts will be executed directly after startup on the console, which eases e.g. testing of MAL scripts directly, without starting a client.
--dbpath=<path>
Path where mserver5 should find a database. Shorthand for option gdk_dbpath. Default value: @localstatedir@/monetdb5/dbfarm/demo.
--dbinit=<stmt>
MAL statement to execute as part of the startup of the server.
--config=<file>
Config file to read options from. This file can contain all options as can be set with the --set flag. See CONFIG FILE FORMAT.
--daemon=<yes|no>
Disable the console prompt, do not read commands from standard input. Default: no
--set <option>=<value>
Set individual configuration option. For possible options, see PARAMETERSsections.
|
--help |
Print list of options. |
--version
Print version and compile configuration.
GDK (Goblin Database Kernel) is the current columnar storage kernel engine of the MonetDB 5 database. It is the component that manages and performs operations on BATs (Binary Association Tables), single columns. The parameters here affect the behaviour of GDK which may nagatively impact performance if set wrongly. The kernel tries to choose the values for optimal performance. Changing these parameters is discouraged.
gdk_mem_bigsize
Memory chunks of size >= gdk_mem_bigsize (in bytes) will be mmaped anonymously. Default: 1<<20 == 1024576 == 1 MiB
gdk_vmtrim
Enable or disable the vmtrim thread which tries to unload memory that is not in use. Default: yes
gdk_debug
You can enable debug output for specific kernel operations. By default debug is switched off for obvious reasons. The value of gdk_debug is an integer, which value can be (a combination of):
1 = THRDMASK = thread-specific debug output
2 = CHECKMASK = property enforcing on new BATs
4 = MEMMASK = memory allocation
8 = PROPMASK = property checking on all values:
tells about wrongly set properties
16 = IOMASK = major IO activity
32 = BATMASK = BAT handling
128 = PARMASK = Thread management
256 = HEADLESSMASK = Warn about BAT heads that are not "headless-ready"
512 = TMMASK = Transaction management
1024 = TEMMASK = Locks and Triggers
4096 = PERFMASK = BBP Performance (?)
8192 = DELTAMASK = Delta debugging (?)
16384 = LOADMASK = Module loading
2097152 = ALGOMASK = show join/select algorithm chosen
4194304 = ESTIMASK = show result size estimations
(for join, select)
16777216 = JOINPROPMASK = disable property checking with
join & outerjoin (e.g., for
performance measurements)
33554432 = DEADBEEFMASK = disable "cleaning" of freed memory
in GDKfree() (e.g., for performance
measurements)
67108864 = ALLOCMASK = exhaustive GDK malloc & free tracing
for debugging (GDK developers, only)
134217728 = OPTMASK = trace the actions, decisions and
effects of MAL optimizers
268435456 = HEAPMASK = trace/debug HEAPextend;
used only for development & debugging
536870912 = FORCEMITOMASK = forcefully activate mitosis even on
small tables, i.e., split small tables
in as many (tiny) pieces as there are
cores (threads) available;
this allows us to test mitosis
functionality without requiring large
data sets (--- at the expense of a
potentially significant interpretation
overhead for unnecessary large plans);
used only for development & testing;
set automatically by Mtest.pyNote that mserver5 recognizes a series of command line options that sets one or more of these debug flags as well:
--threads (THRDMASK | PARMASK) --memory (MEMMASK | ALLOCMASK) --properties (CHECKMASK | PROPMASK | BATMASK) --io (IOMASK | PERFMASK) --heaps (HEAPMASK) --transactions (TMMASK | DELTAMASK | TEMMASK) --modules (LOADMASK) --algorithms (ALGOMASK | ESTIMASK) --performance (JOINPROPMASK | DEADBEEFMASK) --optimizers (OPTMASK) --forcemito (FORCEMITOMASK)
Default: 0
mserver5 instructs the GDK kernel through the MAL (MonetDB Assembler Language) language. MonetDB 5 contains an extensive optimiser framework to transform MAL plans into more optimal or functional (e.g. distributed) plans. These parameters control behaviour on the MAL level.
mal_listing
You can enable the server listing the parsed MAL program for any script parsed on the command line. The value of mal_listing is an integer that have the following possible values:
0 = Disable 1 = List the original input 2 = List the MAL instruction 4 = List the MAL type information 8 = List the MAL UDF type 16 = List the MAL properties 32 = List the hidden details 64 = List the bat tuple count
Default: 0
monet_vault_key
The authorisation tables inside mserver5 can be encrypted with a key, such that reading the BATs does not directly disclose any credentials. The monet_vault_key setting points to a file that stores a secret key to unlock the password vault. It can contain anything. The file is read up to the first null-byte (’ ’), hence it can be padded to any length with trailing null-bytes to obfuscate the key length. Generating a key can be done for example by using a tool such as pwgen and adding a few of the passwords generated. Make sure not to chose a too small key. Note that on absence of a vault key file, some default key is used to encrypt the authorisation tables. Changing this setting (effectively changing the key) for an existing database makes that database unusable as noone is any longer able to login. If you use monetdbd(1) [6], a per-database vault key is set.
max_clients
Controls how many client slots are allocated for clients to connect. This settings limits the maximum number of connected clients at the same time. Note that MonetDB is not designed to handle massive amounts of connected clients. The funnel capability from monetdbd(1) [6] might be a more suitable solution for such workloads.
Default 64.
The SQL component of MonetDB 5 runs on top of the MAL environment. It has its own SQL-level specific settings.
sql_debug
Enable debugging using a mask. This option should normally be disabled (0). Default: 0
sql_optimizer
The default SQL optimizer pipeline can be set per server. See the optpipe setting in monetdb(1) [8] when using monetdbd. During SQL initialization, the optimizer pipeline is checked against the dependency information maintained in the optimizer library to ensure there are no conflicts and at least the pre-requisite optimizers are used. The setting of sql_optimizer can be either the list of optimizers to run, or one or more variables containing the optimizer pipeline to run. The latter is provided for readability purposes only. Default: default_pipe
The following are possible pipes to use:
minimal_pipe
The minimal pipeline necessary by the server to operate correctly. minimal_pipe=inline,remap,deadcode,multiplex,garbageCollector
default_pipe
The default pipe line contains as of Feb2010 mitosis-mergetable-reorder, aimed at large tables and improved access locality. default_pipe=inline,remap,costModel,coercions,evaluate,emptySet,aliases,pushselect,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,matpack,dataflow,history,multiplex,garbageCollector
no_mitosis_pipe
The no_mitosis pipe line is identical to the default pipeline, except that optimizer mitosis is omitted. It is used mainly to make some tests work deterministically, and to check/debug whether "unexpected" problems are related to mitosis (and/or mergetable). no_mitosis_pipe=inline,remap,costModel,coercions,evaluate,emptySet,aliases,pushselect,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,matpack,dataflow,history,multiplex,garbageCollector
sequential_pipe
The sequential pipe line is identical to the default pipeline, except that optimizers mitosis & dataflow are omitted. It is use mainly to make some tests work deterministically, i.e., avoid ambigious output, by avoiding parallelism. sequential_pipe=inline,remap,costModel,coercions,evaluate,emptySet,aliases,pushselect,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,matpack,history,multiplex,garbageCollector
nov2009_pipe
The default pipeline used in the November 2009 release. nov2009_pipe=inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
Debugging the optimizer pipeline The best way is to use mdb and inspect the information gathered during the optimization phase. Several optimizers produce more intermediate information, which may shed light on the details. The opt_debug bitvector controls their output. It can be set to a pipeline or a comma separated list of optimizers you would like to trace. It is a server wide property and can not be set dynamically, as it is intended for internal use.
The conf-file readable by mserver5 consists of parameters of the form "name=value".
The file is line-based, each newline-terminated line represents either a comment or a parameter.
Only the first equals sign in a parameter is significant. Whitespace before or after the first equals sign is not stripped. Trailing whitespace in a parameter value is retained verbatim.
Any line beginning with a hash (#) is ignored, as are lines containing only whitespace.
The values following the equals sign in parameters are all a string where quotes are not needed, and if written be part of the string.
monetdbd(1) [6], monetdb(1) [8], mclient(1) [9]
msqldump − dump a MonetDB/SQL database
msqldump [ options ] [ dbname ]
MonetDB is a database management system that is developed from a main-memory perspective with use of a fully decomposed storage model, automatic index management, extensibility of data types and search accelerators, SQL- and XML- frontends.
Msqldump is the program to dump an MonetDB/SQL database. The dump can be used to populate a new MonetDB/SQL database.
−−help (−?)
Print usage information and exit.
−−database=database (−d database)
Specify the name of the database to connect to. The −d can be omitted if it is the last option.
−−host=hostname (−h hostname)
Specify the name of the host on which the server runs (default: localhost).
−−port=portnr (−p portnr)
Specify the portnumber of the server (default: 50000).
−−user=user (−u user)
Specify the user to connect as. If this flag is absent, the client will ask for a user name. Note that user must follow immediately after the option.
−−describe (−D)
Only dump the database schema.
−−inserts (−N)
When dumping the table data, use INSERT INTO statements, rather than COPY INTO + CSV values. INSERT INTO statements are better portable, and necessary when the load of the dump is processed by e.g. a JDBC application.
−−functions (−f)
Only dump functions definitions.
−−table=table (−t table)
Only dump the specified table.
−−quiet (−q)
Don’t print the welcome message.
−−Xdebug (−X)
Trace network interaction between mclient and the server.
mclient(1) [9]
Memory consumption.
MonetDB requires all data that needs to be active at any given point in time to fit into the address space --- and of course to fit on the storage device, (i.e., your disk system). On 32-bit systems, the address space is at most 32-bit ( 4 GB); in practice, it is actually limited to 3 GB or even 2 GB on most systems. On 64-bit systems, the address space can theoritcally be 64-bit, but in pactice is often "limited" to 48-bit or so --- not that that makes any difference ...
MonetDB excessively uses main memory for processing, but does not require that all data fit in the available physical memory. To handle a dataset that exceed the available physical memory, MonetDB does not (only) rely on the available swap space, but (also) uses memory-mapped files to exploit disk storage beyond the swap space as virtual memory.
For example, while bulk-loading data (preferably via a COPY INTO statements from a (possibly compressed) CSV file), MonetDB need to have all columns of the table that is currently being loaded "active", i.e., accessable in the address space. However, during loading, parts of the data are continuously written to the persistent files on disk, i.e., the whole table does not have to fit into main memory. E.g., loading a 100 GB table works fine on a system with 8 GB RAM and 16 GB swap -- provided there is sufficient free disk space.
During query processing, MonetDB requires for each single MAL operation during the query execution that all its inputs, its outputs, and possible temporary data structure fit in the address space. MonetDB automatically resorts to virtual memory and memory mapped files for large intermedate results. Also (large) persistent tables are accessed using memory mapping.
While running, you might see your mserver5 process' virtual size grow well beyond the available physical memory and possibly also well beyond your swap space. In principle, this is not a problem at all. Most of this virtual size is due to the fact that large base tables (or intermediate results) that recide as files on disk are memory-mapped into the address space. Those parts of the data that are currently not accessed do not consume any physical memory (except possible for caching purposes).
However, if individual columns of your table(s) and/or individual columns of intermediate results exceed the size of the available physical memory, the performance of MonetDB might (will) decrease due to increased I/O requirements.
The disk space footprint is determined by the way columns are being stored. MonetDB uses dictionary encoding for string columns, but aside from this there is no default compression applied to reduce the disk footprint. The prime reason being the two-headed sword of compression. It safes (cheap) disk space and IO bandwidth at the cost of expensive CPU (de)compression overhead (See compression [10]). Since all columns are memory mapped upon access, i.e. they need not be decompressed. If disk space comes at a premium and memory residency can be guaranteed for a long time, then one of the compression optimizers may become helpful.
The disk footprint can be assessed using the (Linux) command 'du' on the dbfarm directory or to run the query 'select * from storage();', provided the sql extensions are pre-loaded into your database. (See storage model [11])
The MonetDB server may become a victim of Linux kernel functionality called Out Of Memory Killer (or OOM Killer) responsible for dealing with excessive memory requirements.
If the system reaches a point where it may run out of memory, OOM Killer looks for victim process and ends its life the hard way.
In most cases, a simple restart of the server will suffice, but when the killer enters during a complex update transaction then the database may end-up in an inconsistent state.
A distinctive feature of column stores is to apply aggressive data compression. However, compression is often a two-edged sword, where movement of large data files over relative slow networks, disk access or memory interconnects is compensated for by applying CPU cycles. The effectiveness of which strongly depends on the mapping from database schema into data structures, their high maintenance cost, the relational algorithms, the system architecture, and the data distribution. The compression ratios cited depends on the input size, which is commonly assumed to be in CSV format, the data distribution, and the database storage footprint, with or without auxiliary data structures like indices.
MonetDB applies different compression techniques automatically at many levels.
The column store representation is highly optimized, where the basic storage structure is a dense array, i.e. without holes to accommodate future insertions or overhead caused by the data structure itself (e.g. B-trees). This dense representation allows for direct mapping of the database files into memory. The storage width ranges from 1 (byte) to 8 bytes (doubles). NULL values are part of the domain space, which avoids auxiliary bit masks at the expensive of 'loosing' a single value from the domain.
All strings are stored using dictionary encoding. This significantly reduces their storage space, but with larger dictionaries the maintenance cost may become expensive. Therefore for really large dictionary tables, MonetDB resort to non-compressed string representation. The references into the dictionary table occupy anywhere from 1 to 8 bytes, depending on the number of elements.
During query evaluation, a dense range of results is represented by a column view. This is a small footprint representation of the result set. It avoids both copying the result and storing it in its private column structure.
When working in a regular mode, the query processing spans the basic column storage and the data changed by transactions (inserts, updates, and deletes). For instance, the inserted data, kept in a separate delta structure, are added to the column before other operations in the plan. In a 'read-only mode' modifying transactions are not allowed and the query processing spans only over the basic column storage. One of the consequences is that query execution may become faster, but temporary tables can not be created..
The readonly mode is administered with a boolean variable, which can be set by the system administrator using the monetdb tool:
shell> monetdb set readonly=yes <mydatabasename>
It ensures that all tables are accessed in read only mode. The user can not even create a temporary table for keeping an intermediate result around.
The alternative route is to deploy SQL schemas in combination with user authentication and access control grants to selectively allow users access to the database. See the corresponding description in the SQL manual [12].
An ASCII-based database dump is a safe scheme to transport a database to another platform or to migrate to an (incompatible) new version of MonetDB. This feature is standard available in mclient.
Consider you have already installed the SQL tutorial database voc and wish to transport it to another machine. Then the following client command line option generates the dump file.
shell> mclient -lsql --database=voc --dump >/tmp/voc.sql
You can inspect the file /tmp/voc.sql to confirm that indeed a readable database dump is available. Move this file over to the new machine. The monetdb [8] tool can be used to create the database. Once done, it suffices to feed the dump file to mclient to populate the database.
shell> mclient -lsql --database=voc /tmp/voc.sql
Migration of a database from other system follows the same route, but be aware that SQL dialects often differ. A manual or scripted patch of a foreign SQL dump is often needed.
Fast backups on Linux
Aside from the ASCII dumps, one can also take the database server out of production using commands
shell> monetdb stop demo
shell> monetdb lock demo
After the database has been securely stopped, we can create a copy of the database directory in the dbfarm and put it aside in a safe place. Alternatively, incremental file-system dumps can be used to reduce the time and storage space for a recovery point. Finally, the database is released for production again
shell> monetdb release demo
It is recommended to always dump the old database into ASCII before installing a new MonetDB release. Subsequently remove the dbfarm. After installation, the dump can be restored.
To dump the SQL database, start the MonetDB SQL Client program and type the command
\>...\databasedump.sql
\D
\>
The path after \>should be an absolute path name (i.e. start with a drive letter) and be in a save location. By default the database is located in %APPDATA%\MonetDB5. After having made a database dump it can be removed. This folder is located inside the dbfarm\demofolder.
Restoring the SQL database can be done using the MonetDB SQL Client program with the following command
\<...\databasedump.sql
In most cases, the system produces informative error messages. However, there are situations where MonetDB enters an area not covered by the test suite or previous use and a segmentation fault occurs. These cases are hard to analyze outside the development lab. To isolate and resolve the issue we need at least the following information.
Sent us the result of the command mserver5 --version --dbname=<databasename> or the equivalent using monetdb --version <databasename>
Is the error reproducible with a small (5-10 line) script/query/program? Trim your experiment to the minimal size that demonstrates the erroneous behavior. Such a script is the best we can hope for, because it will end up in the nightly testing.
In addition, follow the steps, assuming that you are logged onto the same Linux (!) machine as where the server will run:
The trail of release notes as of the first time we made the code base available on SourceForge.
Our current release notes can be found in here [13].
|
Oct 2012 feature release |
|
| Build Environment |
|
| Java Module |
|
| Client Package |
|
| MonetDB5 Server |
|
| Merovingian |
|
| MonetDB Common |
|
| Bug Fixes | |
No Debian and Ubuntu packages were built for this release (i.e. Oct2012) due to a packaging failure. We expect to have resolved that problem by Oct2012-SP1. We apologise for the inconvenience.
|
Oct 2012-SP1 bugfix release |
|
| Bug Fixes | |
For this release (i.e. Oct2012-SP1) there are once again Debian and Ubuntu packages. From this release onward, Ubuntu Lucid Lynx (10.04) is no longer supported.
|
Oct 2012-SP2 bugfix release |
|
| SQL |
|
| Java Module |
|
| Bug Fixes |
|
|
Oct 2012-SP3 bugfix release |
|
| Bug Fixes |
|
|
Jul 2012 feature release |
|
| Build Environment |
|
| SQL |
|
| Client Package |
|
| MonetDB5 Server |
|
| Merovingian |
|
| MonetDB Common |
|
| Bug Fixes |
|
|
Jul 2012-SP1 bugfix release |
|
| Java Module |
|
| Client Package |
|
| MonetDB5 Server |
|
| Merovingian |
|
| Bug Fixes |
|
|
Jul 2012-SP2 bugfix release |
|
| Java Module |
|
| MonetDB5 Server |
|
| Merovingian |
|
| MonetDB Common |
|
| Bug Fixes |
|
|
Apr 2012-SP2 bugfix release |
|
| Client Package |
|
| MonetDB Common |
|
| Bug Fixes |
|
Apr 2012-SP1 bugfix release
| Build Environment |
|
| SQL |
|
| Merovingian |
|
| MonetDB Common |
|
| Bug Fixes |
|
|
Apr 2012 feature release |
|
| Build Environment |
|
| SQL |
|
| Java Module |
|
| Client Package |
|
| MonetDB5 Server |
|
| Merovingian |
|
| MonetDB Common |
|
| Bug Fixes |
|
|
Dec 2011-SP2 bugfix release |
|
| Java Module |
|
| Bug Fixes |
|
|
Dec 2011-SP1 bugfix release |
|
| Build Environment |
|
| SQL |
|
| Java Module |
|
| MonetDB5 Server |
|
| Merovingian |
|
| Bug Fixes |
|
|
Dec 2011 feature release |
|
| SQL |
|
| Java Module |
|
| Client Package |
|
| MonetDB5 Server |
|
| Merovingian |
|
| MonetDB Common |
|
| Bug Fixes |
|
The Aug2011 release is the first release where the default size of OIDs on 64-bit WIndows systems is 64 bits. Before, the default on Windows was 32 bits. On all other 64-bit platforms, the default size of OIDs was also 64 bits. This means that, on 64-bit Windows systems, the database needs to be converted. This is done automatically when the database is first opened, but as always with automatic conversions, it is a good idea to make a backup first.
The Aug2011 uses a slightly different catalog from earlier releases. The database is automatically updated when first opened.
This release is the last release that comes with a JDBC driver that can be used with Java 1.4 and 1.5, also known as JDBCv3.
|
Aug 2011-SP3 bugfix release |
|
| SQL |
|
| Merovingian |
|
| Bug Fixes |
|
|
Aug 2011-SP2 bugfix release |
|
| Client Package |
|
| Merovingian |
|
| Bug Fixes |
|
|
Aug 2011-SP1 bugfix release |
|
| SQL |
|
| Client Package |
|
| MonetDB5 Server |
|
| Bug Fixes |
|
|
Aug 2011 feature release |
|
| Build Environment |
|
| Java Module |
|
| Client Package |
|
| MonetDB5 Server |
|
| Geom Module |
|
| Merovingian |
|
| MonetDB Common |
|
| Bug Fixes |
|
| This is the first release of the MonetDB suite that does not contain MonetDB4 and MonetDB/XQuery. As already mentioned in the Mar2011 release notes [220], work on the Pathfinder compiler, which forms the basis of MonetDB/XQuery, continues at The University of Tübingen [221].
An upgrade from the Mar2011 release should be smooth, even if MonetDB/XQuery is installed. The Windows installers for MonetDB/SQL and MonetDB/XQuery have always been independent, and the Fedora, Debian, and Ubuntu versions have been made independent in the Mar2011 release. The Apr2011 release uses a slightly changed SQL catalog than previous releases. The catalog will be updated automatically the first time an SQL database is opened. Note that because of the incompatibility, once updated, the database cannot be read by older versions. Also note that a database from the Feb2010 release or before cannot be read by this release. First update the database with the Mar2011 release. This is also the first release where we have created FreeBSD binaries. These binaries are highly experimental. The software should run as well as on any other system, but the packaging is obviously different from other systems. As before, we also provide binaries for Windows, Fedora (13 and 14), Debian (5.0 and 6.0), Ubuntu (9.10, 10.04, and 10.10), Mac OS X, and Solaris.
Apr 2011 feature release |
|||||||||||||||||||||||||
Client Package |
Plugged a small memory leak occurring upon redirects by the server (e.g. via monetdbd) |
||||||||||||||||||||||||
| MonetDB Common | Fixed bugs in antiselect which gave the incorrect result when upper and lower bound were equal. This bug could be triggered by the SQL query SELECT * FROM t WHERE x NOT BETWEEN y AND y | ||||||||||||||||||||||||
| Java Module | Clarify exception messages for unsupported methods Removed XQuery related XRPC wrapper and XML:DB code, removed support for language=xquery and language=mil from JDBC. |
||||||||||||||||||||||||
| MonetDB5 Server |
Mserver5 no longer reads monetdb5.conf upon startup by default. Use --config=file to have mserver5 read a configuration on startup | ||||||||||||||||||||||||
| SQL | Some names in the SQL catalog were changed. This means that the database in the Apr2011 release is not compatible with pre-Apr2011 databases. The database is converted automatically when opened the first time. This database can then no longer be read by an older release. | ||||||||||||||||||||||||
| Merovingian | Fix monetdb return code upon failure to start/stop a database. The forward property for databases has been removed. Instead, only a global proxy or redirect mode can be set using monetdbd. Monetdbd can no longer log error and normal messages to separate logfiles, logging to stdout and stderr is no longer possible either. The .merovingian_pass file is no longer in use, and replaced by the .merovingian_properties file. Use monetdbd (get|set) passphrase to view/edit the control passphrase. Existing .merovingian_pass files will automatically be migrated upon startup of monetdbd. Monetdbd now understands commands that allow to create, start, stop, get and set properties on a given dbfarm. This behaviour is intended as primary way to start a MonetDB Database Server, on a given location of choice. monetdbd get and set are the replacement of editing the monetdb5.conf file (which is no longer in use as of the Apr2011 release). See monetdbd(1). |
||||||||||||||||||||||||
| Bug Fixes |
|
||||||||||||||||||||||||
This is the last planned release for MonetDB4 and MonetDB/XQuery. MonetDB4 has served us well, but we need to move on. MonetDB/XQuery, being implemented on top of MonetDB4, is a casualty of this decision. The work on the Pathfinder compiler, which forms the basis of MonetDB/XQuery, continues at The University of Tübingen [221].
As of this "Mar2011" release (version 11.1.1), all components of MonetDB have been gathered into one single package, mainly to simplify the compilation process. If you're using the Mercurial clone [265], use the Mar2011 branch and the Mar2011_1 tag.
The packaging of MonetDB has been completely overhauled. In the past, there were various subpackages that had to be configured and built individually, but that had to be done in the correct order. From this release onward, the process of building MonetDB has been greatly simplified. There is only a single configuration/build/install cycle for the whole suite. On Linux/Unix systems this means one call to configure (when building from the Mercurial sources this has to be preceded by one call to the bootstrap script), one call to make, and one call to make install. On Windows, the bootstrap and configure stages can be skipped (and you need to use nmake instead of make).
The directory structure of the source tree was also completely overhauled. The MonetDB4 and MonetDB5 directories were renamed monetdb4 and monetdb5 respectively, the MonetDB directory was renamed gdk, src subdirectories were removed, and several subsystems were moved to the new common directory.
The version numbers have changed since we now have a single package. The version number of this release is 11.1.1.
We now package for Fedora 13 and 14, for Debian 5.0 (Lenny) and 6.0 (Squeeze), and for Ubuntu 9.10 (Karmic Koala), 10.04 (Lucid Lynx), and 10.10 (Maverick Meerkat).
On Debian and Ubuntu, updating to this release is a bit more involved than simply using apt-get upgrade or the "Mark All Upgrades" button in the Synaptic Package Manager. When using these commands, they will "keep back" the monetdb packages, so in order to actually update them you will need to give the apt-get install command and specify the relevant monetdb packages, or in Synaptic first select the relevant monetdb packages and then select Package->Mark for Upgrade.
Binaries are available.
Binaries are available.
Binaries are available.
MonetDB Server 4
MonetDB Server 5
The following bug tracker items were fixed since the previous "Oct 2010 [283]" release:
The detailed list of changes can be found in the source code Mercurial logs.
Release "Jun2010" consists of the following updated components. If you're using the Mercurial clone [265], use the Jun2010 branch and the Jun2010_1 tag.
| Name | Version | Subdirectory | Note/Comment |
| MonetDB Common | 1.38.1 | MonetDB | |
| MonetDB Clients | 1.38.1 | clients | |
| MonetDB4 Server | 4.38.1 | MonetDB4 | |
| MonetDB4/XQuery | 0.38.1 | pathfinder | |
| MonetDB5 Server | 5.20.1 | MonetDB5 | |
| MonetDB5/SQL | 2.38.1 | sql | |
| MonetDB5/SQL/GIS | 0.18.1 | geom | |
| MonetDB Java | 1.38.1 | java | |
| MonetDB Testing | 1.38.1 | testing | (developers only) |
NOTE:
Before upgrading to the latest "Jun2010" release from a release of MonetDB older than the Nov2008 release, please make a dump (SQL [324], XQuery [325]) of your database, and rename/move/backup the database directories (dbfarm, sql_logs, xquery_logs). After the upgrade, restore (SQL [324], XQuery [326]) your database, again. Once you have checked and confirmed the correctness of the restore, you can delete the above renamed/moved/backed-up old database directories.
When upgrading from a release of MonetDB older than the May2009 release, you need to move your write-ahead log following the "recommended" instructions for SQL [327] and/or XQuery [328].
We now package for Fedora 11, 12, and 13, for Debian 5.0 (Lenny), and for Ubuntu 9.10 (Karmic Koala) and 10.04 (Lucid Lynx).
Release "Feb2010" consists of the following updated components
| Name | Version | CVS module | CVS branch | Note/Comment |
| MonetDB Common | 1.36.1 | MonetDB | Feb2010 | |
| MonetDB Clients | 1.36.1 | clients | Feb2010 | |
| MonetDB4 Server | 4.36.1 | MonetDB4 | Feb2010 | |
| MonetDB4/XQuery | 0.36.1 | pathfinder | Feb2010 | |
| MonetDB5 Server | 5.18.1 | MonetDB5 | Feb2010 | |
| MonetDB5/SQL | 2.36.1 | sql | Feb2010 | |
| MonetDB5/SQL/GIS | 0.16.1 | geom | Feb2010 | |
| MonetDB Java | 1.36.1 | java | Feb2010 | |
| MonetDB Testing | 1.36.1 | testing | Feb2010 | (developers only) |
NOTE:
Before upgrading to the latest "Feb2010" release from a release of MonetDB older than the Nov2008 release, please make a dump (SQL [331], XQuery [332]) of your database, and rename/move/backup the database directories (dbfarm, sql_logs, xquery_logs). After the upgrade, restore (SQL [331], XQuery [333]) your database, again. Once you have checked and confirmed the correctness of the restore, you can delete the above renamed/moved/backed-up old database directories.
When upgrading from a release of MonetDB older than the May2009 release, you need to move your write-ahead log following the "recommended" instructions for SQL [334] and/or XQuery [335].
Packaging
Nothing to report. Nothing to report
SQL
XQuery
Client Packages
The following bug tracker items were fixed since the previous "Nov 2009 [344]" release: The detailed list of changes can be found in the source code CVS logs.
MonetDB Nov2009-SP2 releaseRelease "Nov2009-SP2" consists of the following updated components
NOTE: Contents
Nov 2009 SP2 bug-fix releaseThis is the second bug fix release of the Nov2009 version. This version can be installed "on top of" the Nov2009 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.) Some of the bugs that were fixed:
The following bug tracker items were fixed since the Nov2009-SP1 release:
Nov 2009 SP1 bug-fix releaseThis is a bug fix release of the Nov2009 version. This version can be installed "on top of" the Nov2009 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.) Some of the bugs that were fixed:
The following bug tracker items were fixed since the Nov2009 release:
Nov 2009 feature releaseUbuntuWhile the Ubuntu version of the Aug2009 release was built for Ubuntu 9.04, the Jaunty Jackalope, the Ubuntu version of the Nov2009 release has now been built for Ubuntu 9.10, the Karmic Koala. FedoraIn addition to Fedora 10 & 11, we now also provide RPMs for Fedora 12. PythonPackaging of some Python support files which are only used for testing was changed. The MonetDB-python RPM has been removed, the files are now packaged in the MonetDB-testing RPM. Equally, the python-monetdb Debian/Ubuntu package has been removed. WindowsOn Windows, the bzip2 library is now also used. The server (e.g., using SQL's COPY INTO) can read files that are compressed using gzip and bzip2. The Coverity [355] service has been used to uncover potential errors, such as dereference through NULL pointers and leakage. The warnings produced in the first run have been dealt with for >90%.
MerovingianThe following features were implemented in the merovingian and monetdb programs:
mclient
Python & Ruby
PHP
JDBC
The following bug tracker items were fixed since the previous "Aug 2009 SP2 [362]" release:
The detailed list of changes can be found in the source code CVS logs. |
|||||||||||||||||||||||||||||||||||||||||||
| © 1994-2009 CWI [429] | Contact us [430] Legal [431] |
||||||||||||||||||||||||||||||||||||||||||
Release "Aug2009-SP2" consists of the following updated components
| Name | Version | CVS module | CVS branch | Note/Comment |
| MonetDB Common | 1.32.4 | MonetDB | Aug2009 | |
| MonetDB Clients | 1.32.4 | clients | Aug2009 | |
| MonetDB4 Server | 4.32.4 | MonetDB4 | Aug2009 | |
| MonetDB4/XQuery | 0.32.4 | pathfinder | Aug2009 | |
| MonetDB5 Server | 5.14.4 | MonetDB5 | Aug2009 | |
| MonetDB5/SQL | 2.32.4 | sql | Aug2009 | |
| MonetDB5/SQL/GIS | 0.12.4 | geom | Aug2009 | |
| MonetDB Java | 1.32.4 | java | Aug2009 | |
| MonetDB Testing | 1.32.4 | testing | Aug2009 | (developers only) |
NOTE:
Before upgrading to the latest "Aug2009-SP2" release from a release of MonetDB older than the Nov2008 release, please make a dump (SQL [331], XQuery [332]) of your database, and rename/move/backup the database directories (dbfarm, sql_logs, xquery_logs). After the upgrade, restore (SQL [331], XQuery [333]) your database, again. Once you have checked and confirmed the correctness of the restore, you can delete the above renamed/moved/backed-up old database directories.
When upgrading from a release of MonetDB older than the May2009 release, you need to move your write-ahead log following the "recommended" instructions for SQL [334] and/or XQuery [335].
This is the second bug fix release of the Aug2009 version. This version can be installed "on top of" the Aug2009 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.)
Some of the bugs that were fixed:
The following bug tracker items were fixed since the Aug2009-SP1 release:
This is a bug fix release of the Aug2009 version. This version can be installed "on top of" the Aug2009 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.)
Some of the bugs that were fixed:
The following bug tracker items were fixed since the Aug2009 release:
We now provide RPMs for Fedora 10 & 11, but no longer for Fedora 9. However, a first check indicates that the Fedora 10 RPMs also install and work fine on Fedora 9.
The following features were implemented in the merovingian and monetdb programs:
The rendering of the mclient utility for SQL has been improved to better utilise the available space on the screen. Main improvement is that columns are no longer wrapped if they contain only NULLs, even though enough space on the terminal is availble.
Release "May2009-SP2" consists of the following updated components
| Name | Version | CVS module | CVS branch | Note/Comment |
| MonetDB Common | 1.30.4 | MonetDB | May2009 | |
| MonetDB Clients | 1.30.4 | clients | May2009 | |
| MonetDB4 Server | 4.30.4 | MonetDB4 | May2009 | |
| MonetDB4/XQuery | 0.30.4 | pathfinder | May2009 | |
| MonetDB5 Server | 5.12.4 | MonetDB5 | May2009 | |
| MonetDB5/SQL | 2.30.4 | sql | May2009 | |
| MonetDB5/SQL/GIS | 0.10.4 | geom | May2009 | |
| MonetDB Java | 1.30.4 | java | May2009 | |
| MonetDB Testing | 1.30.4 | testing | May2009 | (developers only) |
IMPORTANT NOTE:
Before upgrading to the latest "May2009-SP2" release from a release of MonetDB older than the Nov2008 release, please make a dump (SQL [331], XQuery [332]) of your database, and rename/move/backup the database directories (dbfarm, sql_logs, xquery_logs). After the upgrade, restore (SQL [331], XQuery [333]) your database, again. Once you have checked and confirmed the correctness of the restore, you can delete the above renamed/moved/backed-up old database directories.
This is the second bug fix release of the May2009 version. This version can be installed "on top of" the May2009 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.)
Some of the bugs that were fixed:
The following bug tracker items were fixed since the May2009 SP1 release:
This is a bug fix release of the May2009 version. This version can be installed "on top of" the May2009 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.)
Some of the bugs that were fixed:
The following bug tracker items were fixed since the May2009 release:
The Windows binaries for SQL and ODBC were built using Microsoft Visual Studio 2008, unlike previous releases which were built using Microsoft Visual Studio 2005. The main implication of this change is that the ODBC driver should now also install on Windows Vista.
The Perl [466], PHP [467], and Python [468] clients were removed from the Windows installers. The clients are still available in the source distribution (although the Python client has changed significantly).
There is no longer an RPM for MonetDB-client-ruby. In order to update to this release, you will first have to remove MonetDB-client-ruby after which you can update to this version. (A new version of the RPM will probably appear in a future release.)
The Ubuntu version was built for Ubuntu 9.04, the Jaunty Jackalope. The Feb2009 release was built for Ubuntu 8.10, the Intrepid Ibex.
The way string data is stored in the database has changed for systems with a 64-bit word size and 32-bit OIDs. When the server first opens a database that was created using the old format, the database is updated automatically. This change affect only the 64-bit Windows build. The other 64-bit builds that are provided by us use 64-bit OIDs and are unaffected by the change.
Parallel loading has been disabled since there was an inherent problem with the implementation. This also affects SQL.
The default location of the write-ahead log has changed. At startup, when the server sees there is an SQL catalog but no write-ahead log, the server will exit immediately with an error message. You can do one of two things (not counting deleting your whole database):
log and log.n where n is some integer) there;--set sql_logdir=... option (where you replace ... with the appropriate path) to point the server to the old location.In either case you need to know the old location of the write-ahead logs. This old location was $prefix/var/MonetDB5/sql_logs/<dbname>/sql/ where $prefix is the prefix under which MonetDB was installed and <dbname> the database name. The error message mentioned above gives the expected location of the write-ahead logs.
Note that when you use the Windows installer and you start the server using the Start menu, the write-ahead log is moved to the new location automatically.
The authentication mechanism has changed somewhat so that it is now possible to dump and restore password information. Note that the passwords themselves cannot be retrieved: the dump/restore mechanism uses a hash of the password.
The following features were implemented in the merovingian and monetdb programs:
Like the previous "Feb 2009 SP2 [471]" release, the default Algebra-based Pathfinder compiler ("ALG") still does not support a few XQuery features and extensions. A detailed list and temporary work-arounds by resorting to the deprecated "milprint_summer" ("MPS") version of the Pathfinder compiler can be found here [472].
The default location of the write-ahead log has changed. At startup, when the server sees there is an XQuery catalog but no write-ahead log, the server will exit immediately with an error message. You can do one of two things (not counting deleting your whole database):
log and log.n where n is some integer) there;--set xquery_logdir=... option (where you replace ... with the appropriate path) to point the server to the old location.In either case you need to know the old location of the write-ahead logs. This old location was $prefix/var/MonetDB4/xquery_logs/<dbname>/xquery/ where $prefix is the prefix under which MonetDB was installed and <dbname> the database name. The error message mentioned above gives the expected location of the write-ahead logs.
Note that when you use the Windows installer and you start the server using the Start menu, the write-ahead log is moved to the new location automatically.
Support for SSL-encrypted connections with the server has been discontinued.
The protocol between client and server has changed slightly. This means you cannot use an old client with a new server.
The Python [473] client modules were rewritten and are now in pure Python and so do not depend on any other part of MonetDB. The new module has support for Python 2.5, 2.6 and 3.0, and it is Python DBAPI 2.0 compatible.
The Ruby [474] client modules were rewritten and are now in pure Ruby and so do not depend on any other part of MonetDB.
MonetDB Feb2009-SP2 releaseRelease "Feb2009-SP2" consists of the following updated components
IMPORTANT NOTE: Contents
Feb 2009 SP2 bug-fix releaseOne set of fixes that affects all components is that stack overflow checking has been improved. It is now much less likely that the server crashes when queries need too much stack space. Instead, the server will return an error. MonetDB/XQuery (tijah): fixes to UTF-8 handling; fixes towards being able to index more than 2**31 words on a 64 bit architecture. MonetDB5: fixed a crash on exit of the server (this crash was not harmful, just annoying). MonetDB: avoid integer overflow on very large tables. mclient/msqldump: fixes to the order in which tables, views, and functions are dumped; also dump triggers; fixed the Ubuntu and Debian installers to include mclient and msqldump. MonetDB/XQuery: fixed a bug where documents were not available when another document in the collection was loaded. merovingian/monetdb: fixes to the way the server is stopped. MonetDB/SQL: fixed a bad concurrency bug where updates were lost or data was incorrectly inserted. The following bug tracker items were fixed since the Feb2009 SP1 release:
Feb 2009 SP1 bug-fix releaseThe main fix that was done in this release that affects all parts of the code, but most especially MonetDB/SQL is that we have plugged a large number of memory leaks. MonetDB/SQL can now handle larger databases and more demanding queries. This is especially noticeable on 32 bit Windows systems where the memory management system (the system malloc library) is not as sophisticated as the one in Linux. mclient/msqldump: Fix to the order in which tables and views are dumped: tables must be dumped before views, since views may reference tables and the view creation will only work if the referenced tables already exist. mclient: Fixed potential deadlock situation when there is a large input file and several queries early on produce large results. MonetDB/XQuery: Fixed a bug where a replace operation could corrupt the document (bug #2642003). The following bug tracker items were fixed since the Feb2009 release:
The following things were fixed or changed in merovingian and monetdb:
The following was changed in the JDBC interface:
Feb 2009 feature releasePackagingWe now provide Debian [485] (Lenny, i.e. 5.0) and Ubuntu [486] (Intrepid, i.e. 8.10) packages. These packages have only been very lightly tested (the packaged software is tested extensively, though). For now we provide 32 and 64 bit versions for Debian and only a 64 bit version for Ubuntu. This of course in addition to the Fedora [487] packages we already provided. MonetDB Server 5The code base has been tested for memory leaks reducing the change of running out of memory too quickly. The Merovingian has undergone more thorough stress testing making it much more stable. SQLThe optimizer of SQL has been overhauled. Rather than working on the binary plans, it performs optimization on the relational algebra tree before it produces the binary plans. XQueryLike the previous "Nov 2008 SP2 [488]" release, the default Algebra-based Pathfinder compiler ("ALG") still does not support a few XQuery features and extensions. A detailed list and temporary work-arounds by resorting to the deprecated "milprint_summer" ("MPS") version of the Pathfinder compiler can be found here [472]. Time and date related types and the comparison and extraction functions on top of them have been implemented in MonetDB/XQuery. MtestMainly for MonetDB developers: The MonetDB testing tools (Mtest.py & friends) from MonetDB/src/testing/ have been moved into their own "testing" CVS module / MonetDB component. IMPORTANT NOTE:In case you plan to upgrade your existing CVS-based "MonetDB" installation, please run `make uninstall` in your "MonetDB" build directory, first, i.e., before running `cvs update` in your "MonetDB" source directory. Once you update your "MonetDB" to the latest CVS development trunk version, and plan to continue (or start) using Mtest.py, you also need to check out the new "testing" CVS module (from SF) and compile and install it any time after you compiled and installed "MonetDB", and before you plan to use Mtest.py. The new "testing" CVS module depends only on "MonetDB" (and hence requires that to be installed), but on no other MonetDB component (except from the "buildtools", in case your are compiling from CVS sources). No other MonetDB component depends on the new "testing" CVS module other than that you obviously need to have "testing" installed once you want/need to run tests using Mtest.py. Details:The MonetDB testing tools (Mtest.py & friends) are not part of the actual MonetDB functionality, but mainly for MonetDB development purposes (and hence only distributed in the source tarballs, but not in any (official) binary packages). To make them less dependent on release cycles (and vice versa), as well as to prepare making them usable without MonetDB --- for now, they actually still depend on MonetDB; see below) --- we decided to separate the MonetDB testing tools from the "MonetDB" CVS module into their own "testing" CVS module. For the time being (i.e., until further notice), "testing" depends on "MonetDB" --- more precisely only on some utils from MonetDB/src/common/, but not on the GDK kernel from MonetDB/src/gdk/, as
Python modules "subprocess26.py" & "trace.py" have been moved from <PYTHON_LIBDIR>/MonetDB/ to <PYTHON_LIBDIR>/MonetDBtesting/ . Bug fixesA detailed list of the 65 bug reports that have been closed since the previous "Nov 2008 SP2 [488]" release can be found in the MonetDB Bug Tracker at SourceForge: page 1/2 [489], page 2/2 [490]. Known Issues in this Release
|
|||||||||||||||||||||||||||||||||||||||||||
| © 1994-2009 CWI [429] | Contact us [430] Legal [431] |
||||||||||||||||||||||||||||||||||||||||||
Release "Nov2008-SP2" consists of the following updated components
| Name | Version | CVS module | CVS branch |
| MonetDB Common | 1.26.2 | MonetDB | Nov2008 |
| MonetDB Clients | 1.26.2 | clients | Nov2008 |
| MonetDB4 Server | 4.26.2 | MonetDB4 | Nov2008 |
| MonetDB4/XQuery | 0.26.2 | pathfinder | Nov2008 |
| MonetDB5 Server | 5.8.2 | MonetDB5 | Nov2008 |
| MonetDB5/SQL | 2.26.2 | sql | Nov2008 |
| MonetDB5/SQL/GIS | 0.6.2 | geom | Nov2008 |
| MonetDB Java | 20081118 | java | (none; CVS trunk) |
IMPORTANT NOTE:
Before upgrading to the latest "Nov2008-SP2" release from a release of MonetDB older than the Nov2008 release, please make a dump (SQL [331], XQuery [332]) of your database, and rename/move/backup the database directories (dbfarm, sql_logs, xquery_logs). After the upgrade, restore (SQL [331], XQuery [333]) your database, again. Once you have checked and confirmed the correctness of the restore, you can delete the above renamed/moved/backed-up old database directories.
This is the second bug fix release of the Nov2008 version. This version can be installed "on top of" the Nov2008 and Nov2008-SP1 releases. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.)
Some of the bugs that were fixed:
The following bug tracker items were fixed since the Nov2008-SP1 release:
This is the first bug fix release of the Nov2008 version. This version can be installed "on top of" the Nov2008 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is *always* a good idea to make backups.)
Some of the bugs that were fixed:
The following bug tracker items were fixed since the Nov2008 release:
The copyright for the MonetDB suite was transferred to a newly formed company MonetDB B.V. One of the most important conditions for this transfer was that the software remains open source, and so the license under which this software is being distributed has not changed (apart from the copyright notice).
The default installation location has been changed from C:\Program Files\CWI to C:\Program Files\MonetDB.
The kernel administration for BATs has been changed to prepare for future enhancements. All descriptors are now initialized and kept in memory, which reduces the number of files and related IO accessing the descriptors.
Memory management for large database has been improved, with the scavenging thread becoming more aggressive in moving dirty pages to disk when we reach 70% of the physical memory.
Code cleaning and simplification continues to provide ease of compilation on many platforms.
The MonetDB 5 kernel underwent a code clean up too, e.g. datatypes have been more strictly applied and all kernel errors are propagated to MAL exceptions.
The number of experimental modules have been developed. The 'recycler' provides support for automatic re-use of intermediate results. It improves query throughput for long sequences with partially overlapping queries.
The system supports intra-query parallelism using the multi-core systems capabilities using the 'dataflow' optimizer.
The 'mergetable' optimizer has been extended to perform symbolic reasoning over oid-reasoning. Together with the MAT and dataflow optimizers it provides a basis to improve multi-core performance.
Several bugs were fixed in Merovingian, the MonetDB Database Server daemon, including a file descriptor leak, which caused Merovingian to terminate after a certain amount of connections using the proxy method. Merovingian has been extended with neighbour discovery features, allowing to redirect to discovered neighbours. The monetdb tool has been improved to give better feedback on starting and stopping databases. Most notably it now waits for completion of the start operation, and gives error feedback when starting failed for some reason.
This release comes with a few more optimizers enable by default. The most important one is the inter-query parallelism, which leads to better use of a multi-core platforms. The effects can be seen in our TPCH experiments [502].
The dataloading code has been improved during our effort to load a 2.6TB astronomical database. Upon request we can provide a detailed report on this experiment.
A query log can be captured with the history.sql script. It provides a basis for post-session analysis of execution times.
Several bugs reported have been solved and functionality in many other areas has been improved.
Like the previous "Jun 2008 [503]" release, the default Algebra-based Pathfinder compiler ("ALG") still does not support a few XQuery features and extensions. A detailed list and temporary work-arounds by resorting to the deprecated "milprint_summer" ("MPS") version of the Pathfinder compiler can be found here [472].
A detailed list of the 116 bug reports that have been closed since the previous "Jun 2008 [503]" release can be found in the MonetDB Bug Tracker at SourceForge: page 1/3 [504], page 2/3 [505], page 3/3 [506].
The detailed list of changes can be found in the source code CVS logs.
Release "Jun2008" consists of the following updated components
| Name | Version | CVS module | CVS branch |
|---|---|---|---|
| MonetDB Common | 1.24 | MonetDB | MonetDB_1-24 |
| MonetDB Clients | 1.24 | clients | Clients_1-24 |
| MonetDB4 Server | 4.24 | MonetDB4 | MonetDB_4-24 |
| MonetDB4/XQuery | 0.24 | pathfinder | XQuery_0-24 |
| MonetDB5 Server | 5.6 | MonetDB5 | MonetDB_5-6 |
| MonetDB5/SQL | 2.24 | sql | SQL_2-24 |
| MonetDB5/SQL/GIS | 0.4 | geom | Geom_0-4 |
and the jars for JDBC and XRPC.
IMPORTANT NOTE:
Before upgrading to the latest "Jun 2008 [503]" release from any previous release of MonetDB, please make a dump (SQL [331], XQuery [332]) of your database, and rename/move/backup the database directories (dbfarm, sql_logs, xquery_logs). After the upgrade, restore (SQL [331], XQuery [333]) your database, again. Once you have checked and confirmed the correctness of the restore, you can delete the above renamed/moved/backed-up old database directories.
For convenience of both developers and users as well as to comply even more with open source standards, we now set/use the following defaults for the configure options
--enable-strict, --enable-assert, --enable-debug, --enable-optimize
When compiling from CVS sources (as mainly done by developers):
strict=yes assert=yes debug=yes optimize=no (*)
When compiling from packaged/distributed sources (i.e., tarballs) (as mainly done by users):
strict=no assert=no debug=no optimize=no (*)
For building binary distributions (RPMs, MSIs):
strict=no assert=no debug=no optimize=yes
With nightly testing for the "Stable" release branches:
strict=yes assert=no debug=no optimize=yes
With nightly testing for the "Current" development trunk:
strict=yes assert=yes debug=no optimize=yes
(*)
IMPORTANT NOTE:
Since
--enable-optimize=yes
is no longer the default for any case except binary packages, it is
strongly recommended
to (re)compile everything from scratch,
explicitly configured
with
--enable-debug=no --enable-assert=no --enable-optimize=yes
in case you want/need to run any performance experiments with MonetDB!
Please note:
--enable-X=yes is equivalent to --enable-X, and
--enable-X=no is equivalent to --disable-X.
There are some changes to the Windows installers since previous releases which are described in this section.
It is recommended to dump the old database and remove it before installing the new version. After installation, the dump can be restored.
In order to dump the SQL database, start the MonetDB SQL Client program and type the commands
\>...\databasedump.sql \D \>
The path after
\>
should be an absolute path name (i.e. start with a drive letter) and be in a save location.
In order to dump the XQuery database, start the server and then connect to the administrative console http://127.0.0.1:50001/admin and use that to dump the database.
By default the database is located in %APPDATA%\MonetDB4 for the MonetDB4/XQuery server and %APPDATA%\MonetDB5 for the MonetDB5/SQL server. After having made a database dump, the latter folder can be removed, but the database dump for MonetDB4/XQuery is made inside the database folder, so remove anything except the folder backup and its contents. This folder is located inside the dbfarm\demo folder.
Restoring the SQL database can be done using the MonetDB SQL Client program with the following command
\<...\databasedump.sql
Restoring the XQuery database can be done from the administrative console.
The 32 bit Windows installers can be installed "over" the old installation. The installer will automatically remove the old version and install the new. The 64 bit Windows installer will not do this (this time), since the code identifying the package was changed. So on 64 bit Windows, first uninstall the previous version and then install the new. The reason for this change is so that the 32 bit version and 64 bit version can both be installed on a 64 bit platform.
The ODBC driver was removed from the MonetDB5-SQL installer. You now need to install the ODBC driver separately. On 64 bit Windows you should install both 32 and 64 bit versions of the ODBC driver.
Also, make sure that after you have uninstalled the old version or upgraded to the new, the files C:\WINDOWS\system32\lib*.dll are all gone. If not, remove them. The new version does not install any files in the system folder. (To be precise, the files are libstream.dll, libmutils.dll, libMonetODBC.dll, libMonetODBCs.dll, and libMapi.dll.)
The JDBC driver was removed from the Windows installers. The driver is now only available separately.
A new MonetDB5-Geom-Module installer is available which can get installed after the MonetDB5-SQL-Installer has been installed. This module provides GIS support to MonetDB/SQL.
TODO: mmap, property checks, ...
TODO: ...
This release includes (partial) support for Simple Feature Specification of OpenGIS. Follow the GEOM link above for a small tutorial on it.
This release marks the beginning of a new era. The default for MonetDB/XQuery has been changed from using the original Pathfinder compiler (nick-named "milprint_summer" or simply "MPS") to using the new improved and enhanced Algebra-based Pathfinder compiler ("ALG").
Compared to the "preview" in the previous "Feb 2008 [515]" release, the functionality of the Algebra-based Pathfinder compiler has been significantly extended to (almost) match that of the original MPS-based compiler. Only the following XQuery features and extensions are not yet supported with the new Algebra-based Pathfinder compiler:
declare option pf:recursion-depth "<number>";
to the query text will ensure that the recursive function is unfolded <number> times. If the recursion is deeper than <number> invocations a runtime error is triggered.
For arbitrary recursive functions, please use the old MPS version as described below.
While support for the old MPS version will not be continued, it remains available for backward compatibility without recompilation, at least for the time being.
For the stand-alone XQuery compiler, the MonetDB/XQuery server, and/or the MonetDB/XQuery client, simply use the following command line options to revert the default to the old MPS version:
In an interactive `
mclient -lxquery
` session, commands "
\g
" / "
\G
" enable / disable the old
MPS
-based compiler in the MonetDB/XQuery server.
A detailed list of the 139 bug reports that have been closed since the previous "Feb2008" release can be found in the MonetDB Bug Tracker at SourceForge: page 1/3 [523], page 2/3 [524], page 3/3 [525].
The detailed list of changes can be found in the source code CVS logs.
Release "Feb2008" consists of the following updated components MonetDB Common 1.22, MonetDB Clients 1.22, MonetDB4 Server 4.22, MonetDB4/XQuery 0.22, MonetDB5 Server 5.4, MonetDB5/SQL 2.22, and the jars for JDBC and XRPC.
IMPORTANT NOTE:
The database format of this release is not compatible with that of any previous release. Before installing this release, make a dump of your database, and do a restore afterwards.
MonetDB Server This release marks the roll forward of the binary storage layout to a single column storage layout. This involved a major overhaul of the MonetDB Server code. Memory leaks have been addressed.
JDBC & XRPCwrapper The Java code (JDBC & XRPCwrapper) has been moved from the clients [526] and pathfinder [527] source trees to a dedicated java [528] source tree in CVS, which can simply be compiled using "ant". Pre-compiled ".jar" are available for Download.
SQL The functional extensions to SQL are limited. The mostly concern minor bugs and some of the optimizers have been improved to better exploit re-occurring joins. The core cracker code has been cleaned up for better inspection and sharing in the community.
XQuery Next to the original Pathfinder compiler (nick-named "milprint_summer" or simply "MPS"), the development of the new improved and enhanced Algebra-based Pathfinder compiler ("ALG") is progressing quickly. While the original MPS version remains the default in this release of MonetDB/XQuery, a preview of the new ALG version is now available without recompilation. For the stand-alone XQuery compiler, the MonetDB/XQuery server, and/or the MonetDB/XQuery client, simply use the following command line options to select the Algebra version as default:
In an interactive `
mclient -lxquery
` session, commands "
\G
" / "
\g
" enable / disable the
Algebra
-based compiler in the MonetDB/XQuery server.
The
Algebra
-based version of Pathfinder will become the default in the next release of MonetDB/XQuery.
Additionally, the following features have been added:
declare option pf:recursion-depth "<number>";
which triggers the compiler to unfold recursive functions <number> times -- thus supporting recursive functions until depth <number>. If the recursion is deeper than <number> invocations a runtime error is triggered.
Bug fixes
A summary with the highlights is given below. A detailed list of
closed bug reports [529]
can be found in the MonetDB Bug Tracker at SourceForge. The detailed list of changes can be found in the source code CVS change logs.
SQL
XQuery
MonetDB Server
Miscellaneous
Release "2007-11-22" (released on Nov 22 2007) consists of the following updatedparts MonetDB Clients 1.20.2, MonetDB5 Server 5.2.2, MonetDB5/SQL 2.20.2.
This release is a bug fix release, covering the following items:
Bug fixes
List of fixed bugs
Release "2007-10-17" (released on Oct 22 2007) consists of MonetDB Common 1.20, MonetDB Clients 1.20, MonetDB4 Server 4.20, MonetDB4/XQuery 0.20, MonetDB5 Server 5.2, MonetDB5/SQL 2.20.
This release marks a long summer of mostly core software development and maintenance. The restructuring of the source tree was partly successful. Semantic dependencies amongst packages, however, forced us to release more components together than originally planned. Close interaction with some large users provided valuable input for bug fixes and performance improvements.
SQL
We added a way to bulk request sequence numbers. When loading (copying) data into tables which have an auto_increment (or alike) column lots of time was spend in the many calls to get all the sequence numbers (observed a performance in crease of about 10x when loading pieces of 100K rows) TINYINT was added to the standard repertoire. We changed how selections over multiple columns of a single table are handled. Furthermore, several bugs stemming from large-scale deployment have been resolved.
XQuery In the XQuery area many issues have been dealt related to the transaction safe update functionality. Furthermore, a value based indexing scheme has been added to speedup the search.
Clients
The mclient utility has undergone a major overhaul. It moved from a Spartan rendering of SQL results towards a more user friendly tabular rendering on ascii terminals. In passing, the option structure and command options has been stratified and extended with a few use full functions, e.g. piping the tabular result as a CSV to an external program. Use the --help for an overview.
MonetDB 5
Merovingian has been added as the gatekeeper of all SQL database services in a particular farm. It redirect clients to the proper connection. The accompanying Monetdb toolkit provides a textual frontend for assessing the status of a collection of MonetDB servers.
Bug fixes
A summary with the highlights is given below. The detailed list of changes can be found in the source code CVS change logs.
SQL
XQuery
Miscellaneous
MonetDB 4.18, MonetDB/XQuery 0.18, MonetDB 5.0, MonetDB 5.0/SQL 2.18. The Mars release marks the official release of the MonetDB server 5 line as the basis for future investments in application development. This affects first and foremost the maintenance of SQL code base, where the MIL version is not being maintained actively anymore by the MonetDB team. A synopsis of the major improvements
WarningThe SQL catalog structure has been changed, which requires a database dump before you install the new version.WarningThe old Window installers do not always remove MonetDB DLLs. You may have to manually remove them from system32 before (re-)installing the new version. It concerns:
MonetDB XQuery XQuery Update Facility has undergone a large series of stress tests to improve correctness, performance and robustness under concurrent updates. In many areas the functionality has been improved:
This release containsPF/Tijah, [530], a text search extension for XQuery. It provides a flexible environment for setting up search systems by supporting out-of-the-box solutions for common tasks, like index creation and result ranking of XML elements. Work continuous on the algebra version compiler and its SQL backend code generator.Release model The months passed since the bug-fix release of February 2007 showed that the MonetDB product family has grown to a size that more frequent releases are only possible if we continue our decomposition process. The SQL and XQuery release dependencies have now been cut. Source distribution The Super Source Tarball has become a stable means to access and install the packages on Linux platforms. Bug fixes A detailed list of changes can be found in the source code CVS change logs. A summary with the highlights is given below.MonetDB/SQLBug fixes SQL/Core:
Bug fixes XQuery:
Bug fixes APIs:
Bug fixes Kernel:
MonetDB 4.16, MonetDB/SQL 2.16, MonetDB/XQuery 0.16, MonetDB 5.0.0_beta1, MonetDB 5.0.0_beta1/SQL 2.16.
A bug fix release was made available on Feb 26, 2007. See the notes at the end of this paper.
The Venus release represents a major shift in functionality. First, we released the long awaited for XQuery Update Facility. As far as we know, it is the first W3C compliant XUF implementation available and provides full transaction control.
The next step was the
big bang
change in the packaging of the server layer. The successor, MonetDB Version 5 is moved to SourceForge. The MonetDB/SQL software line is available with both back-ends, but for Version 4 it is the final release. Finally, redesign over the website has lead to a better navigational structure and much more information on the product lines. A detailed list of changes can be found in the source code CVS change logs. A summary with the highlights is given below.
Source distribution MonetDB Version 5.0.0_beta1 was prepared and shipped to SourceForge.
SQL front-end The SQL functionality has been extended to support SQL triggers and fully functional Persistent Stored Modules. This extension was inspired by our ongoing port of the Skyserver [531] application. Dependencies between SQL objects are stored now and dropping objectsrespect the 'strict' object dependency rule. Loading large tables have been significantly improved and the heuristic query optimizer covers a much larger space.
XQuery This release contains an implementation of XUF (XQuery Update Facility) based on the W3C working draft [532]. In addition, the release adds a number of significant other features to XQuery:
Kernel improvements The memory mapped file functionality has been signficantly changed to accomodate efficient processing of XQuery/XUF.
Documentation The revamped website became alive.
New versions of all components of the MonetDB suite are released.
MonetDB 4.14, MonetDB/SQL 2.14, MonetDB/XQuery 0.14, MonetDB 5.0_beta1
This release was created in November 2006, but abandoned a few weeks later as the code base was too unstable to warrant a public release.
MonetDB 4.12, MonetDB/SQL 2.12, MonetDB/XQuery 0.12, and MonetDB/Five Alpha Release 1 were released on June 23, 2006.
This MonetDB release marks the end of a period where much attention was given to extend the XQuery/Xupdate functionality and efficiency. Although not finished, the many code improvements are valuable to the extended client base. Furthermore, this release marks a feature freeze for XUpdate functionality, claiming enough time to asses its stability and performance before an official release is announced. You may encounter some loose ends and rough edges. A detailed list of changes can be found in the change log of the CVS repository. A summary with the highlights is given below.
Source distribution The MonetDB Version 5 Alpha Release was prepared. It shares the SQL front-end with version 4.
SQL front-end Preliminary support for triggers was added. Now local and global temporary tables are supported. They caused a large rewrite of the session/transaction management. Next to these improvements, many small and large bugs have been fixed. Most notably are fixes to key constraint handling and concurrent transactions.
XQuery All open bugs of XQuery have been addressed, significantly improving its functionality. Serialization, a critical component in any XQuery implementation, has been revamped to obtain a 5-10x speedup in this area. Special attention has been given to parent/ancestor steps. Now they work many times faster inside for-loops (have been loop-lifted) Furthermore, we added XPath extensions for XML standoff annotations (--set standoff=enabled as runtime option to Mserver)
The development of XUpdate was set back by the necessary changes to the underlying MonetDB engine to support BATs with holes in the void sequences. More testing is needed to remove the rough edges.
APIs
The PHP library on Linux has been revamped. It is now based on the PostgreSQL PHP library code.
Kernel improvements The BAT recycle cache has been completed. This greatly improve the performance for applications that create/destroy an abundance of small BATs.
The transaction semantics of the kernel has been extended to support a sub-commit of BATs. This prepares the road to combine SQL and XQuery in one Mserver in the future.
Windows port Cross- and native- compilation for 64-bit Windows platforms versions has somewhat be improved, but is not complete yet. The distribution section will shortly contain a 64-bit version for download.
Documentation improvements Some minor changes, but still an area with a potential great return-on-investment.
MonetDB 4.10, MonetDB/SQL 2.10 and MonetDB/XQuery 0.10 were released on Jan 24, 2006. This MonetDB release marks the end of a period where much attention was given to support simple SQL and XQuery applications efficiently. These improvements came from careful analysis of student programs and participating in the c't Magazine DVDstore benchmark.
A detailed list of changes can be found in the change log of the CVS repository. A summary with the highlights is given below.
Source distribution The MonetDB software base has been split to ease source distribution. The tools to prepare the source compilation (Mx), source code generators (MEL, Burg) and makefile generators (autogen) are assembled in the buildtools package. They are not needed anymore to recompile the source code distributed. It involved major changes to the configuarion scripts. A complete clean rebuild is advised.
SQL front end The SQL catalog management has been completely overhauled. It provides much better performance for lightweight queries and provides a cleaner interface for transaction management. All changes to a base table are assembled in insertion/deletion BATs, which can be merged at transaction commit with the base tables.
Sequences support has been added along the specification of SQL 2003. This allows for identity columns, serials (PostgreSQL) or auto_increments (MySQL) in MonetDB. Several minor changes to the build-in operators and syntax recognition, e.g. uchr has been dropped and temporal support has been improved.
SQL server's default transaction mode is now AUTO COMMIT. Support for SET AUTO_COMMIT=true/false has been removed and has been replaced with the lower level Xauto_commit statement issued from the communication libraries. AUTO COMMIT can be switched on and off using the SQL statements START TRANSACTION and COMMIT or ROLLBACK.
There were many small changes to the SQL back-end, such as private name space for cached queries and a large cleanup of the SQL result set code. The protocol for sending results set has been optimized to reduce the communication overhead.
Most BAT related code has been moved to their own directory to prepare for future different storage back-ends. This directory also contains the transaction and logger code. The transaction management has been inproved to allow for reusing the structures which store the transactions catalog information.
XQuery MonetDB/XQuery performance has been boosted using an index node and 'prepared' query/result caching. It now also supports XQuery module definitions. The performance of small XQueries has noticeably improved.
APIs
The experiments with the c't Magazine benchmark led to a re-design of parts of the MAPI protocol, aiming for less overhead in header analysis and falling back to a single exchange mode (blocked) for JDBC. It proofed to increase performance with at least a factor two.
JDBC has been largely revamped for additional speed improvements. Support for retrieval of more metadata has been added as well. The stage has been prepared to also support server-side redirections for future use.
The Perl DBI library has greatly be improved. It uses the MAPI functionality directly now. The module has been registered at the official Perl archive (CPAN)
ODBC has been upgraded to align with the protocol changes and also supports native (server side) prepared statements.
PHP, Python: No changes.
MIL The MIL internal representation (YYTREE) has been overhauled to improve execution of small XQuery operations. Minor language changes, e.g. the module statement is limited to a single argument.
Kernel improvements The BAT buffer pool re-uses the file names of BAT locations and the default temporary names. This improves handling of small BAT creations. The code has been prepared for re-use-garbage in the near future.
A constant module has been added. It supports BAT operations with a column designated by a scalar value.
Windows port A new windows installer preparation scheme under Linux has been deployed.
Documentation improvements Some minor changes, but still an area with a potential great return-on-investment.
MonetDB 4.8 & MonetDB/SQL 2.8 were released on May 29, 2005. They were accompanied by the first MonetDB/XQuery 0.8 release (the Mercury release). A detailed list of changes can be found in the change log of the CVS repository. A summary with the highlights is given below.
SQL front end Added SQL statement modifiers EXPLAIN, PROFILE and PREPARE/EXEC. Explain returns the query execution plan as a MIL program and the query is not executed. PROFILE executes the query and stores profiling information in the 'history' table. The prepare and execute work together and can be used by the client programs to implement PREPARE and EXECUTE functionality. The SQL module functionality has been included . They can be used to introduce a module written in C or a plain SQL module. Modules can add new types, functions and tables to the system. [TODO] See for example the 'url' example module.
JDBC driver
Application interfaces The PHP interface has been finalized. The Perl DBI library interface has reached a mature level.
Kernel improvements The kernel underwent some renovation to improve its usefulness in future releases. The BAT storage structures have been trimmed to consume just 1/3th of the previous space, which can be used to reduce the overhead of short queries by caching all descriptors in main memory. The BAT structure also underwent a revision to accomodate a more flexible property maintenance list. The changes have be shown to improve processing of 'compiled' small MIL queries to run up to 30\% faster.
Windows port The windows port can now be build both using Microsofts Compiler suites and using MinGW.
Documentation improvements The documentation for PHP5 installation and interaction has been added.
MonetDB 4.6.0 & MonetDB/SQL 2.6.0 was released on February 14th, 2005, (the Valentijn release). Since the previous release, many improvements have been made. A detailed list of changes can be found in the change log of the CVS repository. A summary with the highlights is given below.
SQL front end MonetDB/SQL now survives the famous 'crashme [533]' program used by MySQL to analyze the features of a DBMS implementation.
Several improvements with regard to the SQL integrity and compliance with the standard were made, as well as new supporting features:
Mbedded The code base has been reduced and the configuration parameterized to allow MonetDB to be linked with your application. The smallest system we have been able to run MonetDB was a single-board Linux computer, called the Gumstixs [535].
Application interfaces The MapiClient command line tool has been extended to enable automatic timing. Reading scripts as part of the interaction is now supported.
Steffen Goeldner joined our team and completely revamped the Perl DBI library interface.
JDBC: see above (section "SQL front end").
MIL cleanup The MIL syntax cleanup, started in version 4.4, was finished. The parse now denies all "legacy" (i.e., pre 4.4.0_rc0) syntax alternatives.
Kernel improvements MonetDB was known to crash on for example large cross-product calculations. This has been prevented by better boundary checking code at several places.
Documentation improvements The MonetDB source code has been largely moved to texi as a preparation step to improve documentation generation.
Code base improvements
Source code indentation has been normalized throughout the code base.
Version 4.4.2 was released on October 26, 2004. It is primarily a bug-fix release.
SQL front end Several bugs affecting the SQL integrity were fixed:
ODBC and JDBC JDBC suffered from a bug when non-ASCII characters were used in queries. Due to an incorrect charset handling the driver locked up. Another bug returned the incorrect username when being asked for the current logged in user using JDBC's DatabaseMetaData.getUser().
Version 4.4 was released on September 30, 2004 and the first official release. It was preceded by version 3.14, 3.16 and 3.18 delivered in 2004, which were all focused on reaching the point where researchers and casual users would benefit from the MonetDB solution. The feature list below summarizes the efforts spent.
SQL front end A fairly complete SQL-99 front end has been constructed. Amongst others, it provides schema management, user authorization, view definitions, referential constraint enforcement, time zone support, sub-queries, and query caching to speedup processing.
ODBC and JDBC The predominant application programming languages are supported using the MonetDB Application Programming Interface (MAPI) library. Amongst others, it is used to construct a functional rich ODBC implementation, which allows you to retrieve data from a MonetDB server from inside an Excel spreadsheet. The JDBC code is a class 4 implementation. It has been used to link MonetDB with other database application development environments.
MIL cleanup The MonetDB Interface Language (MIL) was originally designed as an intermediate and debugging language. Its definition has been brought more in line of a real programming language, without loosing its flexibility to write concise scripts.
Kernel improvements Heavy internal use revealed bugs and performance issues. In combination with the lengthly bug list compiled by our commercial partner over the years, we have reached the point that serious crashes have become a rarity.
Documentation improvements Documentation in a research setting often comes last, but we are confident that the information provided is sufficient for both a casual end-user, building an application like the VOC, and the demanding researcher, interested in our research on cache-conscious code.
Testing MonetDB is tested daily on 17 different platforms, configured with widely different hardware profiles, but also a variety of compilers. The MonetDB code base was cleaned up to the point that all compiler warnings were dealt with. Currently, it compiles with the strongest compilation options available. Testing has reached the point that a day with 24 hours is not enough to run and analyze the test suite.
Packaging Distribution of a software package as rich and complex as MonetDB calls for major (human) investments in software engineering tasks. The software heavily relies on open-source packages such as automake, auto-config. For the Windows platform the necessary files are included as well.
Links:
[1] http://dev.monetdb.org/Assets/VOC/voc_dump.sql.gz
[2] http://dev.monetdb.org/Assets/VOC/voc_dump.sql.bz2
[3] http://www.monetdb.org/Documentation/Tutorial
[4] http://www.monetdb.org/Documentation/Manuals/SQLreference/CopyInto
[5] http://www.monetdb.org/Documentation/msqldump
[6] http://www.monetdb.org/Documentation/monetdbd-man-page
[7] http://www.monetdb.org/Documentation/mserver5-man-page
[8] http://www.monetdb.org/Documentation/monetdb-man-page
[9] http://www.monetdb.org/Documentation/mclient-man-page
[10] http://www.monetdb.org/Documentation/UserGuide/Compression
[11] http://www.monetdb.org/Documentation/Cookbooks/SQLrecipies/storage-model
[12] http://www.monetdb.org/Documentation/SQLreference/Schema
[13] http://www.monetdb.org/Downloads/ReleaseNotes
[14] http://bugs.monetdb.org/3158
[15] http://bugs.monetdb.org/3104
[16] http://bugs.monetdb.org/3155
[17] http://bugs.monetdb.org/3084
[18] http://bugs.monetdb.org/3125
[19] http://bugs.monetdb.org/3161
[20] http://bugs.monetdb.org/3182
[21] http://bugs.monetdb.org/3168
[22] http://bugs.monetdb.org/3192
[23] http://bugs.monetdb.org/2579
[24] http://bugs.monetdb.org/2659
[25] http://bugs.monetdb.org/2805
[26] http://bugs.monetdb.org/2886
[27] http://bugs.monetdb.org/2977
[28] http://bugs.monetdb.org/2978
[29] http://bugs.monetdb.org/2999
[30] http://bugs.monetdb.org/3048
[31] http://bugs.monetdb.org/3124
[32] http://bugs.monetdb.org/3136
[33] http://bugs.monetdb.org/3143
[34] http://bugs.monetdb.org/3163
[35] http://bugs.monetdb.org/3169
[36] http://bugs.monetdb.org/3173
[37] http://bugs.monetdb.org/3181
[38] http://bugs.monetdb.org/3185
[39] http://bugs.monetdb.org/3186
[40] http://bugs.monetdb.org/3188
[41] http://bugs.monetdb.org/3189
[42] http://bugs.monetdb.org/3190
[43] http://bugs.monetdb.org/3191
[44] http://bugs.monetdb.org/3199
[45] http://bugs.monetdb.org/3205
[46] http://bugs.monetdb.org/3176
[47] http://bugs.monetdb.org/3208
[48] http://bugs.monetdb.org/3209
[49] http://bugs.monetdb.org/3212
[50] http://bugs.monetdb.org/3016
[51] http://bugs.monetdb.org/3091
[52] http://bugs.monetdb.org/3099
[53] http://bugs.monetdb.org/3100
[54] http://bugs.monetdb.org/3103
[55] http://bugs.monetdb.org/3105
[56] http://bugs.monetdb.org/3109
[57] http://bugs.monetdb.org/3111
[58] http://bugs.monetdb.org/3112
[59] http://bugs.monetdb.org/3113
[60] http://bugs.monetdb.org/3114
[61] http://bugs.monetdb.org/3116
[62] http://bugs.monetdb.org/3119
[63] http://bugs.monetdb.org/3134
[64] http://bugs.monetdb.org/3135
[65] http://bugs.monetdb.org/3107
[66] http://bugs.monetdb.org/3075
[67] http://bugs.monetdb.org/3090
[68] http://bugs.monetdb.org/3093
[69] http://bugs.monetdb.org/3132
[70] http://bugs.monetdb.org/3139
[71] http://bugs.monetdb.org/3117
[72] http://bugs.monetdb.org/3144
[73] http://bugs.monetdb.org/3145
[74] http://bugs.monetdb.org/3150
[75] http://bugs.monetdb.org/2594
[76] http://bugs.monetdb.org/3085
[77] http://bugs.monetdb.org/3086
[78] http://bugs.monetdb.org/3087
[79] http://bugs.monetdb.org/3089
[80] http://bugs.monetdb.org/3096
[81] http://bugs.monetdb.org/2454
[82] http://bugs.monetdb.org/2916
[83] http://bugs.monetdb.org/2949
[84] http://bugs.monetdb.org/2958
[85] http://bugs.monetdb.org/2960
[86] http://bugs.monetdb.org/2972
[87] http://bugs.monetdb.org/2987
[88] http://bugs.monetdb.org/2992
[89] http://bugs.monetdb.org/3000
[90] http://bugs.monetdb.org/3028
[91] http://bugs.monetdb.org/3046
[92] http://bugs.monetdb.org/3063
[93] http://bugs.monetdb.org/3072
[94] http://bugs.monetdb.org/3073
[95] http://bugs.monetdb.org/3074
[96] http://bugs.monetdb.org/3077
[97] http://bugs.monetdb.org/3079
[98] http://bugs.monetdb.org/2997
[99] http://bugs.monetdb.org/2982
[100] http://bugs.monetdb.org/2983
[101] http://bugs.monetdb.org/2984
[102] http://bugs.monetdb.org/2994
[103] http://bugs.monetdb.org/3023
[104] http://bugs.monetdb.org/3030
[105] http://bugs.monetdb.org/3032
[106] http://bugs.monetdb.org/2915
[107] http://bugs.monetdb.org/2947
[108] http://bugs.monetdb.org/2968
[109] http://bugs.monetdb.org/2974
[110] http://bugs.monetdb.org/2988
[111] http://bugs.monetdb.org/2998
[112] http://bugs.monetdb.org/3002
[113] http://bugs.monetdb.org/3011
[114] http://bugs.monetdb.org/3012
[115] http://bugs.monetdb.org/3029
[116] http://bugs.monetdb.org/3031
[117] http://bugs.monetdb.org/3036
[118] http://bugs.monetdb.org/3038
[119] http://bugs.monetdb.org/3043
[120] http://bugs.monetdb.org/3045
[121] http://bugs.monetdb.org/3052
[122] http://bugs.monetdb.org/2862
[123] http://bugs.monetdb.org/2933
[124] http://bugs.monetdb.org/2946
[125] http://bugs.monetdb.org/2964
[126] http://bugs.monetdb.org/2969
[127] http://bugs.monetdb.org/2973
[128] http://bugs.monetdb.org/2979
[129] http://bugs.monetdb.org/2995
[130] http://bugs.monetdb.org/3004
[131] http://bugs.monetdb.org/3009
[132] http://bugs.monetdb.org/3013
[133] http://bugs.monetdb.org/3014
[134] http://bugs.monetdb.org/3017
[135] http://bugs.monetdb.org/3020
[136] http://bugs.monetdb.org/3034
[137] http://bugs.monetdb.org/3041
[138] http://bugs.monetdb.org/2834
[139] http://bugs.monetdb.org/2877
[140] http://bugs.monetdb.org/2882
[141] http://bugs.monetdb.org/2883
[142] http://bugs.monetdb.org/2952
[143] http://bugs.monetdb.org/2950
[144] http://bugs.monetdb.org/2943
[145] http://bugs.monetdb.org/2944
[146] http://bugs.monetdb.org/2936
[147] http://bugs.monetdb.org/2937
[148] http://bugs.monetdb.org/2938
[149] http://bugs.monetdb.org/2846
[150] http://bugs.monetdb.org/2908
[151] http://bugs.monetdb.org/2901
[152] http://bugs.monetdb.org/2897
[153] http://bugs.monetdb.org/2889
[154] http://bugs.monetdb.org/2884
[155] http://bugs.monetdb.org/2885
[156] http://bugs.monetdb.org/2865
[157] http://bugs.monetdb.org/2888
[158] http://bugs.monetdb.org/2953
[159] http://bugs.monetdb.org/2935
[160] http://bugs.monetdb.org/2740
[161] http://bugs.monetdb.org/2802
[162] http://bugs.monetdb.org/2873
[163] http://bugs.monetdb.org/2891
[164] http://bugs.monetdb.org/2910
[165] http://bugs.monetdb.org/2914
[166] http://bugs.monetdb.org/2934
[167] http://bugs.monetdb.org/2939
[168] http://bugs.monetdb.org/2940
[169] http://bugs.monetdb.org/2959
[170] http://bugs.monetdb.org/2963
[171] http://bugs.monetdb.org/2965
[172] http://bugs.monetdb.org/2975
[173] http://bugs.monetdb.org/2981
[174] http://bugs.monetdb.org/2875
[175] http://bugs.monetdb.org/2912
[176] http://bugs.monetdb.org/2919
[177] http://bugs.monetdb.org/2920
[178] http://bugs.monetdb.org/2921
[179] http://bugs.monetdb.org/2923
[180] http://bugs.monetdb.org/2924
[181] http://bugs.monetdb.org/2928
[182] http://bugs.monetdb.org/2346
[183] http://bugs.monetdb.org/2712
[184] http://bugs.monetdb.org/2774
[185] http://bugs.monetdb.org/2890
[186] http://bugs.monetdb.org/2894
[187] http://bugs.monetdb.org/2898
[188] http://bugs.monetdb.org/2900
[189] http://bugs.monetdb.org/2904
[190] http://bugs.monetdb.org/2906
[191] http://bugs.monetdb.org/2909
[192] http://bugs.monetdb.org/2879
[193] http://bugs.monetdb.org/2887
[194] http://bugs.monetdb.org/2850
[195] http://bugs.monetdb.org/2828
[196] http://bugs.monetdb.org/2814
[197] http://bugs.monetdb.org/2851
[198] http://bugs.monetdb.org/2336
[199] http://bugs.monetdb.org/2701
[200] http://bugs.monetdb.org/2817
[201] http://bugs.monetdb.org/2836
[202] http://bugs.monetdb.org/2838
[203] http://bugs.monetdb.org/2839
[204] http://bugs.monetdb.org/2840
[205] http://bugs.monetdb.org/2841
[206] http://bugs.monetdb.org/2842
[207] http://bugs.monetdb.org/2845
[208] http://bugs.monetdb.org/2847
[209] http://bugs.monetdb.org/2848
[210] http://bugs.monetdb.org/2849
[211] http://bugs.monetdb.org/2852
[212] http://bugs.monetdb.org/2855
[213] http://bugs.monetdb.org/2856
[214] http://bugs.monetdb.org/2857
[215] http://bugs.monetdb.org/2859
[216] http://bugs.monetdb.org/2860
[217] http://bugs.monetdb.org/2866
[218] http://bugs.monetdb.org/2868
[219] http://bugs.monetdb.org/2869
[220] http://www.monetdb.org/OldReleaseNotes/Mar2011
[221] http://www.pathfinder-xquery.org/
[222] http://bugs.monetdb.org/2827
[223] http://bugs.monetdb.org/2820
[224] http://bugs.monetdb.org/2833
[225] http://bugs.monetdb.org/2818
[226] http://bugs.monetdb.org/2844
[227] http://bugs.monetdb.org/2823
[228] http://bugs.monetdb.org/2813
[229] http://bugs.monetdb.org/2058
[230] http://bugs.monetdb.org/2734
[231] http://bugs.monetdb.org/2767
[232] http://bugs.monetdb.org/2797
[233] http://bugs.monetdb.org/2811
[234] http://bugs.monetdb.org/2812
[235] http://bugs.monetdb.org/2819
[236] http://bugs.monetdb.org/2821
[237] http://bugs.monetdb.org/2822
[238] http://bugs.monetdb.org/2825
[239] http://bugs.monetdb.org/2826
[240] http://bugs.monetdb.org/2829
[241] http://bugs.monetdb.org/2830
[242] http://bugs.monetdb.org/2831
[243] http://bugs.monetdb.org/2832
[244] http://bugs.monetdb.org/2835
[245] http://bugs.monetdb.org/2837
[246] http://bugs.monetdb.org/2781
[247] http://bugs.monetdb.org/2784
[248] http://bugs.monetdb.org/2798
[249] http://bugs.monetdb.org/2806
[250] http://bugs.monetdb.org/2807
[251] http://bugs.monetdb.org/2808
[252] http://bugs.monetdb.org/2810
[253] http://bugs.monetdb.org/1956
[254] http://bugs.monetdb.org/2547
[255] http://bugs.monetdb.org/2588
[256] http://bugs.monetdb.org/2590
[257] http://bugs.monetdb.org/2639
[258] http://bugs.monetdb.org/2766
[259] http://bugs.monetdb.org/2779
[260] http://bugs.monetdb.org/2793
[261] http://bugs.monetdb.org/2795
[262] http://bugs.monetdb.org/2796
[263] http://bugs.monetdb.org/2800
[264] http://bugs.monetdb.org/2801
[265] http://dev.monetdb.org/hg/MonetDB/
[266] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#Mar2011
[267] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#Packaging
[268] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#GDK
[269] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#M4
[270] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#M5
[271] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#SQL
[272] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#XQuery
[273] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#Merovingian
[274] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#Clients
[275] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#Geom
[276] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#Java
[277] http://monetdb.cwi.nl/Development/Releases/Mar2011/index.html#Bugs
[278] http://bugs.monetdb.org/2648
[279] http://bugs.monetdb.org/2677
[280] http://bugs.monetdb.org/2705
[281] http://bugs.monetdb.org/2727
[282] http://bugs.monetdb.org/2720
[283] http://monetdb.cwi.nl/Development/Releases/Oct2010/index.html
[284] http://bugs.monetdb.org/104
[285] http://bugs.monetdb.org/2351
[286] http://bugs.monetdb.org/2358
[287] http://bugs.monetdb.org/2586
[288] http://bugs.monetdb.org/2593
[289] http://bugs.monetdb.org/2609
[290] http://bugs.monetdb.org/2634
[291] http://bugs.monetdb.org/2640
[292] http://bugs.monetdb.org/2647
[293] http://bugs.monetdb.org/2673
[294] http://bugs.monetdb.org/2679
[295] http://bugs.monetdb.org/2680
[296] http://bugs.monetdb.org/2698
[297] http://bugs.monetdb.org/2704
[298] http://bugs.monetdb.org/2708
[299] http://bugs.monetdb.org/2710
[300] http://bugs.monetdb.org/2713
[301] http://bugs.monetdb.org/2715
[302] http://bugs.monetdb.org/2717
[303] http://bugs.monetdb.org/2725
[304] http://bugs.monetdb.org/2726
[305] http://bugs.monetdb.org/2729
[306] http://bugs.monetdb.org/2730
[307] http://bugs.monetdb.org/2733
[308] http://bugs.monetdb.org/2735
[309] http://bugs.monetdb.org/2737
[310] http://bugs.monetdb.org/2738
[311] http://bugs.monetdb.org/2743
[312] http://bugs.monetdb.org/2744
[313] http://bugs.monetdb.org/2745
[314] http://bugs.monetdb.org/2748
[315] http://bugs.monetdb.org/2750
[316] http://bugs.monetdb.org/2752
[317] http://bugs.monetdb.org/2753
[318] http://bugs.monetdb.org/2757
[319] http://bugs.monetdb.org/2768
[320] http://bugs.monetdb.org/2773
[321] http://bugs.monetdb.org/2786
[322] http://bugs.monetdb.org/2788
[323] http://bugs.monetdb.org/2790
[324] http://www.monetdb.org/SQL/Documentation/Database-Dumps.html
[325] http://www.monetdb.org/XQuery/QuickTour/adminGUI/index.html#backup
[326] http://www.monetdb.org/XQuery/QuickTour/adminGUI/index.html#restore
[327] http://www.monetdb.org/Development/Releases/May2009/index.html#SQL
[328] http://www.monetdb.org/Development/Releases/May2009/index.html#XQuery
[329] http://bugs.monetdb/org/2994521
[330] http://bugs.monetdb.org/2956664
[331] http://monetdb.cwi.nl/SQL/Documentation/Database-Dumps.html
[332] http://monetdb.cwi.nl/XQuery/QuickTour/adminGUI/index.html#backup
[333] http://monetdb.cwi.nl/XQuery/QuickTour/adminGUI/index.html#restore
[334] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#SQL
[335] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#XQuery
[336] http://monetdb.cwi.nl/Development/Releases/Feb2010/#Feb2010
[337] http://monetdb.cwi.nl/Development/Releases/Feb2010/#Packaging
[338] http://monetdb.cwi.nl/Development/Releases/Feb2010/#GDK
[339] http://monetdb.cwi.nl/Development/Releases/Feb2010/#M5
[340] http://monetdb.cwi.nl/Development/Releases/Feb2010/#SQL
[341] http://monetdb.cwi.nl/Development/Releases/Feb2010/#XQuery
[342] http://monetdb.cwi.nl/Development/Releases/Feb2010/#Clients
[343] http://monetdb.cwi.nl/Development/Releases/Feb2010/#Bugs
[344] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html
[345] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#Nov2009_SP2
[346] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#Nov2009_SP1
[347] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#Nov2009
[348] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#Packaging
[349] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#GDK
[350] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#M5
[351] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#SQL
[352] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#XQuery
[353] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#Clients
[354] http://monetdb.cwi.nl/Development/Releases/Nov2009/index.html#Bugs
[355] http://scan.coverity.com/index.html
[356] http://monetdb.cwi.nl/SQL/Documentation/SQL-Runtime-Features.html
[357] https://sourceforge.net/tracker/index.php?func=detail&aid=2830257&group_id=56967&atid=482471
[358] http://sourceforge.net/tracker/?func=detail&aid=2830754&group_id=56967&atid=482471
[359] http://monetdb.cwi.nl/Development/Assets
[360] https://sourceforge.net/tracker/?func=detail&aid=2855846&group_id=56967&atid=482471
[361] http://monetdb.cwi.nl/XQuery/Documentation/Session-Expression-Cache.html
[362] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html
[363] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2903111&group_id=56967
[364] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2902320&group_id=56967
[365] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2898944&group_id=56967
[366] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2898378&group_id=56967
[367] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2897126&group_id=56967
[368] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2896012&group_id=56967
[369] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2895791&group_id=56967
[370] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2895290&group_id=56967
[371] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2894927&group_id=56967
[372] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2894150&group_id=56967
[373] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893878&group_id=56967
[374] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893875&group_id=56967
[375] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893859&group_id=56967
[376] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893846&group_id=56967
[377] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893823&group_id=56967
[378] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893821&group_id=56967
[379] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893815&group_id=56967
[380] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893484&group_id=56967
[381] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2893247&group_id=56967
[382] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2891718&group_id=56967
[383] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2891191&group_id=56967
[384] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2890914&group_id=56967
[385] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2890702&group_id=56967
[386] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2890035&group_id=56967
[387] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2887282&group_id=56967
[388] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2879011&group_id=56967
[389] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2879008&group_id=56967
[390] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2879005&group_id=56967
[391] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2878994&group_id=56967
[392] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2877044&group_id=56967
[393] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2876948&group_id=56967
[394] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2874045&group_id=56967
[395] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2873564&group_id=56967
[396] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2872884&group_id=56967
[397] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2864179&group_id=56967
[398] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2863458&group_id=56967
[399] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2837050&group_id=56967
[400] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2834654&group_id=56967
[401] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2817414&group_id=56967
[402] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2791361&group_id=56967
[403] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2791356&group_id=56967
[404] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2771052&group_id=56967
[405] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2716723&group_id=56967
[406] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2686008&group_id=56967
[407] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2627137&group_id=56967
[408] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2211565&group_id=56967
[409] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2015135&group_id=56967
[410] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1991738&group_id=56967
[411] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1981735&group_id=56967
[412] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1976341&group_id=56967
[413] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1964365&group_id=56967
[414] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1959269&group_id=56967
[415] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1911209&group_id=56967
[416] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1893448&group_id=56967
[417] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1809586&group_id=56967
[418] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1747068&group_id=56967
[419] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1739353&group_id=56967
[420] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1730547&group_id=56967
[421] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1726599&group_id=56967
[422] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1681244&group_id=56967
[423] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1637867&group_id=56967
[424] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1607210&group_id=56967
[425] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=1595129&group_id=56967
[426] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=987304&group_id=56967
[427] https://sourceforge.net/tracker/?func=detail&atid=482468&aid=921173&group_id=56967
[428] http://sourceforge.net/
[429] http://www.cwi.nl/
[430] mailto:monet@cwi.nl
[431] http://monetdb.cwi.nl/Development/Legal/index.html
[432] http://sourceforge.net/projects/monetdb/
[433] http://sourceforge.net/tracker/?atid=482468&group_id=56967&func=browse
[434] http://sourceforge.net/tracker/?group_id=56967
[435] http://monetdb.cwi.nl/Development/TestWeb/index.html
[436] http://monetdb.cwi.nl/testing/projects/monetdb/permastore/
[437] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#Aug2009_SP2
[438] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#Aug2009_SP1
[439] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#Aug2009
[440] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#Packaging
[441] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#GDK
[442] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#M5
[443] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#SQL
[444] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#XQuery
[445] http://monetdb.cwi.nl/Development/Releases/Aug2009/index.html#Clients
[446] http://sourceforge.net/tracker/index.php?func=detail&aid=2825974&group_id=56967&atid=482468
[447] http://sourceforge.net/tracker/index.php?func=detail&aid=2830900&group_id=56967&atid=482468
[448] http://sourceforge.net/tracker/index.php?func=detail&aid=2831994&group_id=56967&atid=482468
[449] https://sourceforge.net/tracker/?func=detail&aid=2814622&group_id=56967&atid=482468
[450] https://sourceforge.net/tracker/?func=detail&aid=2818176&group_id=56967&atid=482468
[451] https://sourceforge.net/tracker/?func=detail&aid=2807609&group_id=56967&atid=482468
[452] https://sourceforge.net/tracker/?func=detail&aid=2812729&group_id=56967&atid=482468
[453] https://sourceforge.net/tracker/?func=detail&aid=2812721&group_id=56967&atid=482468
[454] https://sourceforge.net/tracker/?func=detail&aid=2826015&group_id=56967&atid=482468
[455] https://sourceforge.net/tracker/?func=detail&aid=2807336&group_id=56967&atid=482468
[456] https://sourceforge.net/tracker/?func=detail&aid=2837561&group_id=56967&atid=482468
[457] https://sourceforge.net/tracker/?func=detail&aid=2800964&group_id=56967&atid=482471
[458] https://sourceforge.net/tracker/?func=detail&aid=1837591&group_id=56967&atid=482471
[459] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#May2009_SP2
[460] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#May2009_SP1
[461] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#May2009
[462] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#Packaging
[463] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#GDK
[464] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#M5
[465] http://monetdb.cwi.nl/Development/Releases/May2009/index.html#Clients
[466] http://www.perl.org/
[467] http://www.php.net/
[468] http://www.python.org/
[469] https://sourceforge.net/tracker/?func=detail&aid=2782776&group_id=56967&atid=482471
[470] https://sourceforge.net/tracker/?func=detail&aid=2705670&group_id=56967&atid=482471
[471] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html
[472] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html#XQuery
[473] http://python.org/
[474] http://www.ruby-lang.org/
[475] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#Feb2009_SP2
[476] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#Feb2009_SP1
[477] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#Feb2009
[478] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#Packaging
[479] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#M5
[480] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#SQL
[481] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#XQuery
[482] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#Mtest
[483] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#Bugs
[484] http://monetdb.cwi.nl/Development/Releases/Feb2009/index.html#Issues
[485] http://www.debian.org/
[486] http://www.ubuntu.com/
[487] http://fedoraproject.org/
[488] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html
[489] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1796
[490] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1846
[491] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#Nov2008_SP2
[492] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#Nov2008_SP1
[493] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#Nov2008
[494] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#Copyright
[495] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#Windows
[496] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#GDK
[497] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#M5
[498] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#SQL
[499] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#XQuery
[500] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#Bugs
[501] http://monetdb.cwi.nl/Development/Releases/Nov2008/index.html#Issues
[502] http://monetdb.cwi.nl/SQL/Benchmark/TPCH/
[503] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html
[504] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1651
[505] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1701
[506] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1751
[507] https://sourceforge.net/tracker/index.php?func=detail&aid=2305746&group_id=56967&atid=482468
[508] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html#Compilation
[509] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html#Windows
[510] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html#GDK
[511] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html#SQL
[512] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html#Geometry
[513] http://monetdb.cwi.nl/Development/Releases/Version4.24/index.html#Bugs
[514] http://monetdb.cwi.nl/SQL/Documentation/SQL_002fGIS.html
[515] http://monetdb.cwi.nl/Development/Releases/Version4.22/index.html
[516] http://monetdb.cwi.nl/XQuery/Documentation/Arithmetic-Functions.html
[517] http://monetdb.cwi.nl/XQuery/Documentation/Prepared-Queries.html
[518] http://monetdb.cwi.nl/XQuery/Documentation/XRPC-Extension.html
[519] http://monetdb.cwi.nl/XQuery/Documentation/XRPC-Server.html
[520] http://monetdb.cwi.nl/XQuery/QuickTour/adminGUI/index.html
[521] http://monetdb.cwi.nl/XQuery/Documentation/XRPC-Syntax.html
[522] http://monetdb.cwi.nl/XQuery/Documentation/StandOff-Extension.html
[523] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1512
[524] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1557
[525] http://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=0&_group=0&order=close_date&sort=ASC&offset=1601
[526] http://monetdb.cvs.sourceforge.net/monetdb/clients/?pathrev=Clients_1-22
[527] http://monetdb.cvs.sourceforge.net/monetdb/pathfinder/?pathrev=XQuery_0-22
[528] http://monetdb.cvs.sourceforge.net/monetdb/java/
[529] https://sourceforge.net/tracker/index.php?func=browse&group_id=56967&atid=482468&set=custom&_assigned_to=0&_status=2&_category=100&_group=100&order=close_date&sort=DESC&offset=0
[530] http://dbappl.cs.utwente.nl/pftijah
[531] http://cas.sdss.org/dr5/en/
[532] http://www.w3.org/TR/2006/WD-xqupdate-20060711/
[533] http://dev.mysql.com/doc/mysql/en/mysql-benchmarks.html
[534] http://www.monetdb.org/todo
[535] http://www.gumstix.org/