triplestore - Difference between Virtuoso Native RDF Quad Store and Virtuoso SQL-Based RDF Triple Store -
i investigating virtuoso, , know differences between native rdf quad store , sql based rdf triple store shown on page (scroll down bit see figure): http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/main/virtjenaprovider
i know native rdf quad store use traditional relational datbaase under hood, optimized faster requests sparql. confuses me! because wonder sql based rdf triple store now...
thanks in advance!
virtuoso in fact whole suite of applications , service layers built on top of own sql database hence understandable confusion.
the native rdf quad store virtuoso's own quad store implementation ironically enough point out sql based. stored , implemented entirely within virtuoso's own sql database implementation. although sql based has fixed table layout , makes use of custom data types store data.
the sql based rdf triple store refers feature of commercial versions of virtuoso allows define mapping rules treat arbitrary normal relational databases (both virtuoso based , other backend based e.g. mysql, postgresql) rdf store.
performance differences
the performance difference comes fact native quad store has known layout, custom rdf data types , lots of software optimizations specific within virtuoso's stack. therefore when virtuoso takes in sparql , compiles equivalent sql query runs extremely efficiently on database. use of custom rdf data types allows them push sparql logic down query engine layer makes evaluation faster.
for sql based triple store there mapping layer involved, have call out sql database (which may external) , translate content rdf form in order computations necessary answer sparql queries. mapping step can extremely costly , makes queries harder optimize because have access less front information rdf data.
plus since data in standard sql types can't push down logic underlying query engine because sql , sparql type semantics don't align in many cases. therefore values have extracted, converted appropriately , expression results computed above query engine layer , fed in necessary. reduces performance because engine has switch between different processing contexts , potentially make many sql queries answer same sparql query.
Comments
Post a Comment