ArcadeDB is a modern, multi purpose Not-Only-SQL database. The ArcadeDB-Gem opens the database for ruby-projects.
The database is organized with types
. A database-type is either a document
, a vertex
or an edge
.
Similar to other database-adapters in ruby, types
are declared in the model directory of the project.
A typical Account
-model is similar to a rudimentary ActiveRecord
-based Model-setup.
module Arcade class Account < Arcade::Vertex attribute :name, Types::Nominal::String attribute :mail, Types::Nominal::String def self.db_init File.read(__FILE__).gsub(/.*__END__/m, '') end end end __END__ CREATE PROPERTY account.name STRING CREATE INDEX ON account (name) UNIQUE ## /model/arcade/account.rb
- Account is a
Vertex
- Two attributes are predefined and type-checked via DRY::Types.
- One Index is defined. Its needed for filtering.
- The code at the bottom of the model-file creates the corresponding database-properties through ->
Account.create_type
.
First steps
It is assumed, that an arcadedb-server is setup and running.
Initialize a ruby project
mkdir test-project && cd test-project mkdir bin mkdir model; mkdir model/arcade bundle init bundle add arcadedb
Clone dev-adventures and modify the provides framework to your needs. Modify the provided arcade.yml!
Open the console cd bin && ./console
and create the Account-Vertex
3.2.0 :002 > Account => Arcade::Account 3.2.0 :003 > Account.create_type 25.10.(15:51:50) INFO->Q: create vertex type account 25.10.(15:51:50) INFO->Q: CREATE PROPERTY account.name STRING 25.10.(15:51:50) INFO->Q: CREATE INDEX ON account (name) UNIQ 3.2.0 :004 > Account.insert name: 'hugo', mail: 'hugo@test.com', age: 37, home: '0098 565 4433' => <account[#1:0]:{0->}{->0}, age: 37, home: 0098 565 4433, mail: hugo@test.com, name: hugo>
Congratulations! You just created the first record. Only essential attributes are predefined. Other attributes are added as needed.
Basic commands
At that point, any database query can be submitted via DB.query "query"
or DB.execute { "query" }
, eg.
DB.query 'select from account' => [{:@rid=>"#1:0", :@type=>"account", :@cat=>"v", :mail=>"hugo@test.com", :name=>"hugo", :age=>37, :home=>"0098 565 4433"}]
Most common tasks are present via ruby, eg.
a = Account.find name: 'hugo' # find one record a.update name: 'danzig' # does not modify a a = a.refresh # mutate a => <account[#1:0]:{0->}{->0}, age: 37, home: 0098 565 4433, mail: hugo@test.com, name: danzig>
This is the first part of an introduction series on ArcadeDB.
Next Part: Ruby Adventures with ArcadeDB 2
Top comments (0)