Re: Common music database?
Jamie McCracken <[email protected]>
| Newsgroups | gmane.comp.gnome.multimedia |
|---|---|
| Message-ID | <[email protected]> |
Milosz Derezynski wrote:
> Just btw, in case this point isn't made strong enough: Our relation type
> library is a _replacement_ for any kind of SQL based systems. You simply
> deal with relations (http://en.wikipedia.org/wiki/Relational_model) as
> data types instead of manipulating them trough SQL. It features
> referential integrity and has all basic operations that are at least
> needed for something like metadata storage for a media player. It's not
> Oracle, and it's not Postgres, but it can replace sqlite3 anytime, and
> it sure can take on MySQL if you don't excess (it's also extensible btw
> the same way GTK+ is extensible as it's based on the Glib GObjet system).
>
> This means, we have an entirely different way of dealing with relations
> ("tables") and tuples ("rows") that contain metadata for a file. And
> yes, we can perform queries just like you would with SQL, just that we
> don't use SQL. And yes, we can do JOINs and PROJECTs and INTERSECTs and
> whatever else.
Tracker does not expose SQL, tables, joins or relations at all (you
cannot use any sql over the Dbus interface!). It uses RDF query which is
more high level than SQL and removes any need to know what tables, joins
and structures are present. It effectively insulates you completely from
the DB structure.
For example to get all 80's music the following query could be performed
in Tracker using the xml based rdf query:
<rdfq:rdfquery>
<rdfq:From eachResource="Files">
<rdfq:Select>
<rdfq:Condition>
<rdfq:and>
<rdfq:greaterThan>
<rdfq:Property name="Audio.Year" />
<rdf:Integer>1979</rdf:Integer>
</rdfq:greaterThan>
<rdfq:lessThan>
<rdfq:Property name="Audio.Year" />
<rdf:Integer>1990</rdf:Integer>
</rdfq:lessThan>
</rdfq:and>
</rdfq:Condition>
</rdfq:Select>
</rdfq:From>
</rdfq:rdfquery>
As you can see all you need to know is what metadata you want. The built
in metadata is published in the following spec:
http://freedesktop.org/wiki/Standards_2fshared_2dfilemetadata_2dspec
And of course you can add your own metadata and query it too likewise.
(I do need to spec out all the possible rdf syntax commands)
On a further note, I believe any system that exposes or expects devs to
use SQL is probably flawed due to the complexity and intimate knowledge
of the DB that would be required.
--
Mr Jamie McCracken
http://www.advogato.org/person/jamiemcc/