OrientDB Server (DB-Server from now) is a multi-threaded Java application that listens to remote commands and executes them against the Orient databases. OrientDB Server supports both binary and HTTP protocols. The first one is used by the Orient native client and the Orient Console. The second one can be used by any languages since it's based on HTTP RESTful API. The HTTP protocol is used also by the OrientDB Studio application.
Starting from v1.7 OrientDB support protected SSL connections.
OrientDB Server is part of Community and Enterprise distributions. To install OrientDB as service follow the following guides
To start the server, execute bin/orient-db.sh (or bin/orient-db.bat on Microsoft Windows systems). By default both the binary and http interfaces are active. If you want to disable one of these change the Server configuration.
Upon startup, the server runs on port 2424 for the binary protocol and 2480 for the http one. If a port is busy the next free one will be used. The default range is 2424-2430 (binary) and 2480-2490 (http). These default ranges can be changed in in Server configuration.
To stop a running server, press CTRL+C in the open shell that runs the Server instance or soft kill the process to be sure that the opened databases close softly. Soft killing on Windows can be done by closing the window. On Unix-like systems, a simple kill is enough (Do not use kill -9 unless you want to force a hard shutdown).
The OrientDB distribution provides the Orient Console tool as a console Java application that uses the binary protocol to work with the database.
Starting from the release 0.9.13 Orient comes with the OrientDB Studio application, a client-side web app that uses the HTTP protocol to work with the database.
To setup a distributed configuration look at: Distributed-Architecture.
By default OrientDB server manages the database under the directory "$ORIENTDB_HOME/databases" where $ORIENTDB_HOME is the OrientDB installation directory. By setting the configuration parameter
"server.database.path" in server orientdb-server-config.xml you can specify a custom path. Example:
<orient-server> ... <properties> <entry value="C:/temp/databases" name="server.database.path" /> </properties> </orient-server>
Plug-ins (old name "Handler") are the way the OrientDB Server can be extended.
To write your own plug-in read below Extend the server.
Contains the list of protocols used by the listeners section. The protocols supported today are:
You can configure multiple listeners by adding items under the
<listeners> tag and selecting the ip-address and TCP/IP port to bind. The protocol used must be listed in the protocols section. Listeners can be configured with single port or port range. If a range of ports is specified, then it will try to acquire the first port available. If no such port is available, then an error is thrown.
By default the Server configuration activates connections from both the protocols:
Contains the list of the static configured storages. When the server starts for each storages static configured storage enlisted check if exists. If exists opens it, otherwise creates it transparently.
By convention all the storages contained in the $ORIENT_HOME/databases are visible from the OrientDB Server instance without the need of configure them. So configure storages if:
By default the "temp" database is always configured as in-memory storage useful to store volatile information.
Example of configuration:
<storage name="mydb" path="local:C:/temp/databases/mydb" userName="admin" userPassword="admin" loaded-at-startup="true" />
Starting from v.0.9.15 OrientDB supports per-server users in order to protect sensible operations to the users. In facts the creation of a new database is a server operation as much as the retrieving of server statistics.
When an OrientDB server starts for the first time, a new user called "root" will be generated and saved in the server configuration. This avoid security problems when, very often, the passwords remain the default ones.
User based authentication checks if the logged user has the permission to access to the requested resource. "*" means access to all the resource. This is the typical setting for the user "root". Multiple resources must be separated by comma.
Example to let to the "root" user to access to all the server commands:
<user name="root" resources="*" password="095F17F6488FF5416ED24E"/>
Example to let to the "guest" user to access only to the "info-server" command:
<user name="guest" resources="info-server" password="3489438DKJDK4343UDH76"/>
Supported resources are:
info-server, to obtain statistics about the server
database.create, to create a new database
database.exists, to check if a database exists
database.delete, to delete an existent database
database.share, to share a database to another OrientDB Server node
database.passthrough, to access to the hosted databases without database's authentication
server.config.get, to retrieve a configuration setting value
server.config.set, to set a configuration setting value
To configure a new user open the config/orientdb-server-config.xml file and add a new XML tag under the tag
<users> <user name="MyUser" password="MyPassword" resources="database.exists"/> </users>
To extend the server's features look at Extends the server.
To debug the server configure your IDE to execute the class OServerMain:
Passing these parameters:
-server -Dorientdb.config.file=config/orientdb-server-config.xml -Dorientdb.www.path=src/site -DORIENTDB_HOME=url/local/orientdb/releases/orientdb-1.2.0-SNAPSHOT -Djava.util.logging.config.file=config/orientdb-server-log.properties -Dcache.level1.enabled=false -Dprofiler.enabled=true
Changing the ORIENTDB_HOME according to your path.