In this blog I have collected some knowledges about OrientDB which is multi-model graph database. This blog can be referred to to some kind of fact checks about OrientDB.
| WARNING: The following facts may change, by the time: For most recent info refer to OrientDB homepage | | — |
Fact List
- An edge is a relationship, the same as a link. Edges provide more flexibility and are available in graph databases while a link is also available in a document database
- Edges are not always stored in the database as a document
- Fully restricted schema-ful data model can be created in OrientDB
- A record is described as a vertex in graph terminology and a Document in a document terminology
- A record is made up of the cluster number and record number
- Classes provide rules and structure to the database schema. They provided through inheritance, properties and constraints
- Clusters in OrientDB serves as:
- Logical separation to limit queries to only the most relevant data
- Geographic dispersed data for more localized access to increase performance
- Sharding large data sets over multiple disks
- Providing data replication options
OrientDB Studio
- OrientDB Studio feature that is available not only in Enterprise Edition
- There are some default classes beginning with “O” inside the database. They add special capabilities to the database such as permissions and server side functions
- Studio provides mechanisms for using both the visual and command interfaces in the browser tab
- V is the Vertex base class
- E is the Edge base class
- Outside of batch operations, you can execute any command against OrientDB in the browse tab.
- In the graph view, only 20 records are displayed from the query. Subsequent queries with different parameters will add nodes to the view within these result limits
- The _studio class stores user specific settings like colors, past queries etc.
Basic Console commands:
- in order to run the console you have to start the shell script ./console.sh
orientdb> create database remote:localhost/ConsoleDemo root hello plocal
plocal
is specified as a storage
the database will be created and connected automatically
Current database is: remote:localhost/ConsoleDemo
orientdb {db=ConsoleDemo}>
In order to disconnect from the db type disconnect
command. To connect back to server level use connect
command as follows:
orientdb> connect remote:localhost root hello
Connecting to remote Server instance [remote:localhost] with user 'root'...OK
at the server level we can see the list of databases with list databases
command. In order to connect our created database we have to use connect command from above by giving default username and password which is admin/admin correspondingly.
orientdb {server=remote:localhost/}> connect remote:localhost/databases/ConsoleDemo admin admin
config
is used to see all the configurations of the database
list classes
- to see all the classes
create class Person extends V
- is used to create a vertex
create property Person.name string
- to create a property in the class
info calss Person
- is used to get information about Person class
insert into Person (name) values ("Anvar"),("Bobur"),("Rustam")
- used to add some data
browse class Person
- used to see records
Backup
In order to backup we have to disconnect from the database and the shutdown the OrientDB database (can be done just by clicking CTRL+C in the console where the orientDB was running in a verbose mode) In a state while OrientDB is turned off, we connect to our database and run backup command (IMPORTANT: BACKUPS IN COMMUNITY VERSION CAN BE PERFORMED ONLY LOCALLY)
orientdb> connect plocal:../databases/ConsoleDemo admin admin
orientdb {db=ConsoleDemo}> backup database /Users/folderWhereYouWantToStore/ConsoleDemo.zip
Database also can be exported and imported
orientdb {db=ConsoleDemo}> export database /Users/folderWhereYouWantToStore/ConsoleDemo.export
orientdb {db=ConsoleDemo}> import database /Users/folderWhereYouWantToStore/ConsoleDemo.export
Basic CRUD
- Main difference between using the
INSERT INTO
command in comparison to theCREATE VERTEX
command is thatCREATE VERTEX
does some extra checks and balances related to a graph database, but either command creates a record
Users and Roles
- Based on Users and Roles (OUser and ORole classes)
- Three default users are created
- Roles can inherit from other roles
- Permissions enforced per resource
- Record level security built in
Applying rules based on the many resource options in OrientDB can provide a very robust permission system, in many cases (Solves about 90% of requirements) Assigning permissions to resources based on role, then assign users to the appropriate roles