-
Notifications
You must be signed in to change notification settings - Fork 5
Links and Link Lists
A record in a database-class is defined by a »rid«. If this is stored in a class, a link is set. In OrientDB links are used to realize unidirectional 1:1 and 1:n relationships.
ActiveOrient autoloads Model-objects when they are accessed. Example: If an Object is stored in Cluster 30 and id 2, then "#30:2" fully qualifies the ActiveOrient::Model object and sets the link if stored somewhere.
ORD.create_class 'test_link', 'test_base'
link_document = TestLink.create att: 'one attribute'
base_document = TestBase.create base: 'my_base', single_link: link_document
base_document.single_link just contains the rid. When accessed, the ActiveOrient::Model::Testlinkclass-object is autoloaded and
base_document.single_link.att
reads the stored content of link_document.
To store a list of links to other Database-Objects, a simple Array is allocated
# predefined linkmap-properties
TestLink.create_property :links, type: :linklist, linkedClass: :test_links
base_document = TestBase.create links: []
(0 .. 20).each{|y| base_document.links << TestLink.create( nr: y )}
#or in schemaless-mode
base_document = TestBase.create links: (0..20).map{|y| TestLink.create nr: y}
base_document.update
base_document.links behaves like a ruby-array.
If you got an undirectional graph
a --> b ---> c --> d
the graph elements can be explored by joining the objects (a[6].b[5].c[9].d)
Refer to the "Time-Graph"-Example for an Implementation of an bidirectional Graph with the same Interface
Overview
Data Management
- Joining Tables, embedded Lists
- Links and Link Lists
- Relations
- Bidirectional Connections
- Working with Hashes
Public API
- Database
- Model CRUD
Misc