DEV Community

Cover image for Ruby Adventures with ArcadeDB
Hartmut B.
Hartmut B.

Posted on • Edited on

Ruby Adventures with ArcadeDB

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 
Enter fullscreen mode Exit fullscreen mode
  • 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 
Enter fullscreen mode Exit fullscreen mode

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>  
Enter fullscreen mode Exit fullscreen mode

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"}] 
Enter fullscreen mode Exit fullscreen mode

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>  
Enter fullscreen mode Exit fullscreen mode

This is the first part of an introduction series on ArcadeDB.

Next Part: Ruby Adventures with ArcadeDB 2

Top comments (0)