should I move from a RDF store to orientDB ?

262 views
Skip to first unread message

emmanue...@taxochronos.fr

unread,
Apr 20, 2014, 7:14:14 AM4/20/14
to orient-...@googlegroups.com
Hello

I'm currently using a RDF store and I consider to move to orientDB because some of my requirements are not met.
My database stores data related to music meta-data, some predefined and some user defined.

With the value of a RDF triplet (subject, property, value) I need to store some annotations and traceability informations.

For example for tempo (BPM) property of a music track (the subject) I need to save:
  • when the tempo was set or change,
  • from which tools the tempo comes from,
  • which version of the tools,
  • if applicable, the tools parameters when computing the tempo
  • ...
I also need to store the music track credits, a list of couple (musician, instrument). Although possible with RDF not easy.

When the property value is changed is need to store the previous value of the property and, if possible, with the related annotations and traceability infos.

At the beginning I thought orientDB was at the same time a mixed document/graph database, but if a understand well from orientDB documentation, I have to choose. Of course I need a graph database. As I'm beginning with graph database, I'm not sure orientDB will satisfy my requirements.

Could you confirm also I can keep a RDF store view of orientDB using Blueprints and sail ?

Regards,
Emmanuel BERRY (Taxochronos)


Luca Garulli

unread,
Apr 20, 2014, 7:48:06 AM4/20/14
to orient-database
Hi Emmanuel,
sure you can use the RDF store on top of Blueprints. About tracking changes you could write an hook to handle such changes and propagate updates.

Lvc@


--

---
You received this message because you are subscribed to the Google Groups "OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email to orient-databa...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Riccardo Tasso

unread,
Apr 22, 2014, 4:21:36 PM4/22/14
to orient-...@googlegroups.com
Hi Emmanuel,
   here I am reporting my own experience with orient and SAIL.


2014-04-20 13:14 GMT+02:00 <emmanue...@taxochronos.fr>:
At the beginning I thought orientDB was at the same time a mixed document/graph database, but if a understand well from orientDB documentation, I have to choose.

Don't worry about this, the Document Database is the same as Graph Database without graph API. You can use Graph Database and you'll have all the functions of Orient.
 
Could you confirm also I can keep a RDF store view of orientDB using Blueprints and sail ?

Theoretically it is possible, of course, but it depends a lot on what you want to achieve.

The most important aspect is the data model. Once you have put data in Orient that can't be directly translated to RDF, SAIL can't help you. What do you expect, for example, when SAIL will find an edge with attributes, or a property value which is a collection? Probably some kind of Exception. The typical use case of SAIL over Blueprints is the creation of a RDF dataset with SAIL (backed by BP of course) which is accessed mainly by SAIL API.

A second aspect to keep in mind is performance. If you plan to just export RDF dumps periodically it could work, but remember that SAIL is a layer over Blueprints, wich is a (very optimized) layer over OriendDB. I feel that performance won't be comparable to those of a Triple Store, designed to store RDF.

Anyway I'm really interested in how are you trying to use OrientDB, please keep me updated.
Riccardo

Justin Harris

unread,
Jun 10, 2014, 6:49:13 PM6/10/14
to orient-...@googlegroups.com
I've been trying to use OrientDB as a RDF store.  Sail provides some good resources to help you load RDF but they get much slower after loading millions of relations.  I've done some things to speed up loading RDF such as only using necessary indices, grouping relations with the same subject but these things didn't help much.  By default Sail uses the default OrientDB index (NOTUNIQUE SB-Tree) so I tried NOTUNIQUE_HASH_INDEX (you can't use UNIQUE_HASH_INDEX because of how Sail treats URI values) and loading was still slow.  To give you an idea, the first 100,000 relations load in about a minute.  But relations 10,000,000 to 10,100,000 take about 4 minutes, and it keeps getting worse as more relations get added.

Do you have any tips on speeding up loading time?

Thanks.

Justin Harris

unread,
Jun 10, 2014, 8:49:49 PM6/10/14
to orient-...@googlegroups.com
I think I've managed to keep the speed consistent by disabling WAL:
OGlobalConfiguration.USE_WAL.setValue(false);

I got some helpful tips from this thread: https://groups.google.com/forum/#!starred/orient-database/PxgQggsOvU8 even though now I get:

Jun 11, 2014 12:48:54 AM com.orientechnologies.common.log.OLogManager log
SEVERE: Error occurred during default cache cleanup
java.util.ConcurrentModificationException
        at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:394)
        at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:413)
        at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:412)
        at com.orientechnologies.orient.core.cache.ODefaultCache$OLinkedHashMapCache.removeEldest(ODefaultCache.java:128)
        at com.orientechnologies.orient.core.cache.ODefaultCache.removeEldest(ODefaultCache.java:60)
        at com.orientechnologies.orient.core.cache.ODefaultCache.access$000(ODefaultCache.java:34)
        at com.orientechnologies.orient.core.cache.ODefaultCache$OLowMemoryListener.lowMemory(ODefaultCache.java:151)
        at com.orientechnologies.orient.core.memory.OMemoryWatchDog$3.run(OMemoryWatchDog.java:179)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)
Reply all
Reply to author
Forward
0 new messages