Re: Proposed module: tracker



Joe Shaw wrote:
Hi,

On Wed, 2007-01-10 at 16:26 +0000, Jamie McCracken wrote:
Joe Shaw wrote:
[snipped my concerns about Tracker]
all these also apply to EDS too yet no one complains?
Some of them apply.  EDS isn't a general data store; it has APIs and
backends that are very specific to the types of data it stores.  Also,
very few applications (none other than Evolution, I believe) actually
store info in EDS.  They're all read only, consuming EDS's data.
it does have the ability to write to but unlike text files its actually 
safe to have multiple writers with a db
Tracker is object to object with key values as properties so it can do more complex stuff (like a playlist object is a collection of music files).
Sorry, I don't understand what you mean by "object to object with key
values as properties."
It can store relational hierarchy - its not just a flat key-value 
storage mechanism. So object to object relationships can be managed 
(Email->EmailAttachemnt, album->track, history->bookmarks etc)
For your playlist example, I have a hard time believing that Tracker can
offer a more optimized storage strategy than one that is tailored for
the application.
trackers one would be both extensible and shareable - more flexible than 
something set in stone or that only one process could write to at a time

If we ever want first class objects or semantic web style functionality then stores like tracker/EDS are needed.
I agree that things like EDS are needed.  For a music player, it should
absolutely expose its data to the desktop; I said exactly that in my
last email.
And same for photos, documents etc

They are not slower - in many cases they result in far fewer disk seeks. The key is to get stuff in bulk (like get all the properties in one call as opposed to getting each individual ones separately). This eliminates the IPC overhead (something GConf needs too)
You either have IPC round-trip overhead, or you have memory overhead in
sending these large messages.  If you're sending them through the D-Bus
bus, message passing overhead is very high, because it validates every
message.
its a question of getting the balance right - you would request chunks 
of data but the optimal size of the chunk would be subject to 
experimentation.
If you get close in the above, the overheads become negligible - X is a 
good example here too of how it manages to offset the IPC overhead
It's not uncommon for music libraries to have in excess of 10,000 songs.
Since this is often thrown around as a potential use case, I think it's
basically a requirement to see this implemented (even prototyped) using
Tracker before its suitability can be determined.
smart apps download data as they need them (this is the whole point of 
client/server database apps)
However we are planning to support persistent live queries where speed 
is essential and the client wishes to get all results. In these cases 
the result set is held in a separate sqlite db (its persistent because 
it will last across sessions and survive system shutdowns). This 
query/db will be a flattened table in the most optimised format 
available so I am pretty confident we can match or even beat any other 
system in performance and apps can read it in-process if they wish (its 
like a snapshot but with added benefit of having live updates). EG it 
could be a query for all music files with a list of metadata.
And one API is easier to learn than a multitude for different metadata and keyword systems (honestly how many systems do we need to do tagging and metadata?).
Again, no one has articulated what the "metadata problem" is.  Tagging
is a pretty easy one to solve, and we can solve it with one API.
Leaftag could be that API, or something else could be that API.  It
doesn't really matter.
Tagging in fspot does not use leaftag afaik. Their metadata system 
appears to be based around something called semweb. Nautilus metadata is 
all xml based and not really shareable system wide.
THeres no question we need a metadata server to sort out all this mess 
so apps can interoperate with it.
Some examples of how tracker can improve the desktop :
These are fine ideas, but let's see them prototyped first, so we can
make an informed decision about whether it's practical and works, rather
than accepting it prima facie.
thats why I am not asking for "tracker the database" to be considered at 
this time. We do need these implemented and I will get round to them.



--
Mr Jamie McCracken
http://jamiemcc.livejournal.com/




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]