On Mon, 2008-10-20 at 15:07 -0400, Jamie McCracken wrote:
> On Mon, 2008-10-20 at 20:07 +0200, Jürg Billeter wrote:
> > as a preparation to support decomposed database tables in Tracker, I've
> > been looking into how we could abstract database access so that the
> > database schema can change without affecting the code in trackerd and
> > tracker-indexer.
> 
> its also likely to affect the stored procs quite heavily and more so
> than the code.
> 
> I dont think a full abstraction is necessary as saving/updating data is
> only done in a few places and this code should be shared more

I expect stored procedures to be less useful when moving to decomposed
tables as the SQL queries will depend on the schema/service definitions
and will therefore become more dynamic. Or do you have a plan how to use
stored procedures effectively with a database schema that depends on the
service definitions?

> > I'm proposing to introduce an additional (private) library that acts as
> > a high-level database interface, so it sits between libtracker-db and
> > trackerd/tracker-indexer. That library, let's call it libtracker-data
> > for now, is the only place where SQL queries get constructed.
> 
> 
> well I have been asking for a libtracker-metadata to host shared
> metadata support between trackerd and tracker-indexer so to some degree
> you will have my approval :)
> 
> Also in the future i want to support direct access to sqlite via  a
> client lib so we can bypass dbus (and trackerd) for select queries where
> speed is paramount and volume of data is too big for dbus to handle
> optimally (think get all my 100,000 music tracks with metadata). So this
> library would have to handle all querying and any future ones (like
> sparql) - so you will have no problem from me for implementing that
> support in a lib
> 
> Im not sure why you want to abstract *all* db access? i would have
> thought indexer specific requests can quite nicely remain where they are
> unless you have a good reason?

If only one library needs to know how the data is stored in the
database, it should be easier to do changes. I think this gets more
important with decomposed tables as we will have a less uniform schema
which will make building SQL statements more complicated, so it makes
sense to move it to a separate library, in my opinion.

> my preference is for sharing more routines rather than abstracting them

Abstracting is not really more than sharing with an appropriate
interface. My goal is not to write an over-engineered abstraction layer,
just enough abstraction to allow moving to decomposed tables. That's
also why I'm proposing to do this incrementally and refactor as needed.

Jürg

_______________________________________________
tracker-list mailing list
tracker-list@gnome.org
http://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to