MonetDBJavaLite

The following documentation of MonetDBJavaLite is brief. The full details of the documentation can be found on its GitHub repository.

IMPORTANT Before any further reading, remember that this software might crash in JVM-native border crossing, although testing has been made on it :) To be 100% safe you can run MonetDBJavaLite in a sub-process inside the JVM, so if it crashes, your application in the main process will still be up!

MonetDBJavaLite is a Java library that allows the integration of MonetDB, a column-wise and high-scale OLAP relational database in the JVM.

This library allows to retrieve results from SQL statements in plain Java primitives/objects, while being JDBC compliant, as well as portable to other JVM programming languages.

Unlike a traditional socket connection between a database server and client, in an embedded connection, both the client and the server share the same process. This approach allows the client to get the results immediately from the server without any serialization or IO, thus obtaining more performance.

The embedded MonetDB database is loaded through a native C shared library by JNI at the bootstrap of the process, thus the database runs natively for further performance.

At the same time, the existing JDBC driver for MonetDB was extended to accommodate both a MAPI (regular socket connection) and an embedded connection, while aiming at the simplicity of the integration of both connections.

Delivery and Installation

The current version for `monetdb-java-lite` is 2.37 and `monetdb-jdbc-new` is 2.36

There are two jars distributed: The new MonetDB JDBC driver jar (monetdb-jdbc-new-<version>.jar), and the MonetDBJavaLite jar (monetdb-java-lite-<version>.jar). The former can be used independently, if only MAPI JDBC connections are desired. The latter contains the embedded server code. For both the Embedded API and the Embedded JDBC connections, the second jar is also required in the CLASSPATH.

The monetdb-jdbc-new-<version>.jar is still compatible with JVM 7, however the monetdb-java-lite-<version>.jar requires JVM 8 to run, as we found problems running in the JVM 8 when we compiled to target JVM 7 (the problem might be related to the JVM rather than us). Currently the monetdb-java-lite-<version>.jar only supports 64-bit architectures.

The monetdb-jdbc-new-<version>.jar is both CPU and Operating System independent. ON the other hand, the monetdb-java-lite-<version>.jar contains the JNI code for 64-bit Linux, Windows and MacOS X.

Both jars can be obtained through the download section of our section of our website.

Starting on version 2.30, both jars can be obtained from the Maven Central repository. Note that monetdb-java-lite depends on monetdb-jdbc-new, so only the second one is required to list in the project's dependencies.

<dependency>
  <groupId>monetdb</groupId>
  <artifactId>monetdb-jdbc-new</artifactId>
  <version>2.36</version>
</dependency>
<dependency>
  <groupId>monetdb</groupId>
  <artifactId>monetdb-java-lite</artifactId>
  <version>2.37</version>
</dependency>

Libraries

Packed in the src/main/resources/libs directory of the monetdb-java-lite-<version>.jar there are several directories, containing the C-library of MonetDB for each supported operating system. The extension of the library should either be the default for a dynamic libraries on the user's OS or the generic (for JNI) .jnilib. For this reason the monetdb-java-lite-<version>.jar size is much larger than the average size of a .jar file. If the user wants to save space, he might delete the unwanted versions of the native library in the src/main/resources/libs directory, although it's not recommended to do so.

In an IDE or when Maven runs tests from the command line, the application will use the unpacked library, already present in the src/main/resources/libs directory (since there isn't a .jar yet). When running "in production" - from a .jar, the application will stream copy the library to a temporary directory, and load the library from there. This is needed, since one cannot use the packed libraries in a .jar directly.

License

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.

Developer and support

The MonetDBJavaLite is being supported by Pedro Ferreira, a developer at MonetDBSolutions. Feel free to create an issue on Bugzilla or GitHub, create a pull request or just send an email. You can also create a question on Stack Overflow with the tag monetdblite.

As you could see I like emoticons! :) Just one more :)

Icon  Name                                Last modified      Size  Description
[PARENTDIR] Parent Directory - [   ] monetdb-jdbc-new-2.24.jar 2017-05-16 15:18 146K [   ] monetdb-java-lite-2.24.jar 2017-05-16 15:19 6.4M [   ] monetdb-jdbc-new-2.25.jar 2017-07-10 15:08 146K [   ] monetdb-java-lite-2.25.jar 2017-07-10 15:08 6.5M [   ] monetdb-java-lite-2.30.jar 2017-07-12 18:55 6.5M [   ] monetdb-jdbc-new-2.30.jar 2017-07-12 18:56 148K [   ] monetdb-java-lite-2.31.jar 2017-07-13 18:01 6.5M [   ] monetdb-jdbc-new-2.31.jar 2017-08-16 13:30 148K [   ] monetdb-java-lite-2.32.jar 2017-08-16 13:30 6.7M [   ] monetdb-java-lite-2.33.jar 2017-10-09 16:18 6.4M [   ] monetdb-jdbc-new-2.32.jar 2017-10-09 16:54 150K [   ] monetdb-jdbc-new-2.33.jar 2018-03-02 16:57 151K [   ] monetdb-java-lite-2.34.jar 2018-03-02 16:57 6.4M [   ] monetdb-java-lite-2.35.jar 2018-03-21 13:05 6.4M [   ] monetdb-jdbc-new-2.34.jar 2018-03-21 14:08 151K [   ] monetdb-jdbc-new-2.35.jar 2018-03-23 11:58 152K [   ] monetdb-java-lite-2.36.jar 2018-03-23 11:58 6.4M [   ] monetdb-java-lite-2.37.jar 2018-05-19 12:45 5.6M [   ] monetdb-jdbc-new-2.36.jar 2018-05-19 12:59 154K [   ] monetdb-jdbc-new-2.37-SNAPSHOT.jar 2018-07-30 14:18 152K [   ] monetdb-java-lite-2.38-SNAPSHOT.jar 2018-08-03 10:37 6.0M [DIR] javadocs/ 2018-08-03 10:39 -