<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: First attempts on improving the Zeitgeist DB before GUADEC</title>
	<atom:link href="http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/feed/" rel="self" type="application/rss+xml" />
	<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/</link>
	<description>The geekiest ogre alive</description>
	<lastBuildDate>Sat, 04 Feb 2012 01:30:23 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Seif Lotfy</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2586</link>
		<dc:creator>Seif Lotfy</dc:creator>
		<pubDate>Thu, 04 Jun 2009 08:44:14 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2586</guid>
		<description>&lt;a href=&quot;#comment-2584&quot; rel=&quot;nofollow&quot;&gt;@Milan Bouchet-Valat&lt;/a&gt; 
We already intend to use the .desktop files for applications as it already contains the executable as well as other info.
renamed/moved files will be monitored by a new process i will introduce to zeitgeist that will update the info manually thus i wanted to give the data ID&#039;s instead of using their path.
I think i will use one table for all apps to work out the issues.

We should go through the DB again. Let us talk online</description>
		<content:encoded><![CDATA[<p><a href="#comment-2584" rel="nofollow">@Milan Bouchet-Valat</a><br />
We already intend to use the .desktop files for applications as it already contains the executable as well as other info.<br />
renamed/moved files will be monitored by a new process i will introduce to zeitgeist that will update the info manually thus i wanted to give the data ID&#8217;s instead of using their path.<br />
I think i will use one table for all apps to work out the issues.</p>
<p>We should go through the DB again. Let us talk online</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Milan Bouchet-Valat</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2584</link>
		<dc:creator>Milan Bouchet-Valat</dc:creator>
		<pubDate>Thu, 04 Jun 2009 08:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2584</guid>
		<description>For what I really understand, you design sounds good to me. A few details though:
- to identify applications, we just agreed yesterday on #gnome-shell that we should use the full path to a .desktop file - rather than the executable. (Jason Smith is going to add put code into gnome-settings-daemon to add a window manager hint on every window that would store that information. But more on that on IRC if you want.)

- to identify documents, I guess you could use a hash in addition to the path. I&#039;m not sure whether indexers do that already, but that allows you not to lose track of a renamed/moved file, which would be silly. Though I&#039;m not a specialist, I let you weight the pros and cons.

- any reason why timestamps are float in your model? To me, there are always integers...

- while giving every app its own table if needed can help integration, I think you should avoid as much as possible to do so. You could just see with UNR what they need, and create the DB for that, so that Zeitgeist itself knows how to deal with this data. And you could also list the cases where external apps would need their own table, and try to give them what they want in your original design.

And I&#039;m particularly happy since my desktop contexts can now be considered as tags, which makes the whole thing cleaner! ;-)</description>
		<content:encoded><![CDATA[<p>For what I really understand, you design sounds good to me. A few details though:<br />
- to identify applications, we just agreed yesterday on #gnome-shell that we should use the full path to a .desktop file &#8211; rather than the executable. (Jason Smith is going to add put code into gnome-settings-daemon to add a window manager hint on every window that would store that information. But more on that on IRC if you want.)</p>
<p>- to identify documents, I guess you could use a hash in addition to the path. I&#8217;m not sure whether indexers do that already, but that allows you not to lose track of a renamed/moved file, which would be silly. Though I&#8217;m not a specialist, I let you weight the pros and cons.</p>
<p>- any reason why timestamps are float in your model? To me, there are always integers&#8230;</p>
<p>- while giving every app its own table if needed can help integration, I think you should avoid as much as possible to do so. You could just see with UNR what they need, and create the DB for that, so that Zeitgeist itself knows how to deal with this data. And you could also list the cases where external apps would need their own table, and try to give them what they want in your original design.</p>
<p>And I&#8217;m particularly happy since my desktop contexts can now be considered as tags, which makes the whole thing cleaner! <img src='http://seilo.geekyogre.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Henstridge</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2583</link>
		<dc:creator>James Henstridge</dc:creator>
		<pubDate>Thu, 04 Jun 2009 08:11:04 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2583</guid>
		<description>A few comments on the schema itself:

1. It is common to just name the primary key of a table just &quot;id&quot;, and foreign keys refering to that table as &quot;$table_id&quot; or just &quot;$table&quot;.

2. Use a consistent naming scheme for tables.  I&#039;d suggest the singular form of what rows represent.  For linkage  tables, use a combination of the two table names.  So that&#039;d involve renaming &quot;tag_ids&quot; to &quot;tag&quot;, &quot;tags&quot; to &quot;data_tag&quot; and perhaps &quot;timetable&quot; to &quot;event&quot; and &quot;data&quot; to &quot;uri&quot;.

3. In some cases where you&#039;ve specified &quot;{KEY}&quot; for multiple fields it is clear that you are using a compound primary key (e.g. the &quot;tags&quot; table), but in others you don&#039;t (e.g. for the &quot;data&quot; table you probably don&#039;t want two rows with the same &quot;uri&quot; value but different &quot;uriid&quot;).  Perhaps specify &quot;{UNIQUE}&quot; or similar where you just mean that a field value is unique but not part of the primary key?

4. As you seem to be using sqlite for storage, you probably want a simple integer primary key for every table.  Sqlite always includes such a key, and will try to name it to match a field in your schema.  So add a primary key to &quot;tags&quot; (you don&#039;t want it to treat &quot;tags.tagid&quot; alone as the primary key) and &quot;timetable&quot;.</description>
		<content:encoded><![CDATA[<p>A few comments on the schema itself:</p>
<p>1. It is common to just name the primary key of a table just &#8220;id&#8221;, and foreign keys refering to that table as &#8220;$table_id&#8221; or just &#8220;$table&#8221;.</p>
<p>2. Use a consistent naming scheme for tables.  I&#8217;d suggest the singular form of what rows represent.  For linkage  tables, use a combination of the two table names.  So that&#8217;d involve renaming &#8220;tag_ids&#8221; to &#8220;tag&#8221;, &#8220;tags&#8221; to &#8220;data_tag&#8221; and perhaps &#8220;timetable&#8221; to &#8220;event&#8221; and &#8220;data&#8221; to &#8220;uri&#8221;.</p>
<p>3. In some cases where you&#8217;ve specified &#8220;{KEY}&#8221; for multiple fields it is clear that you are using a compound primary key (e.g. the &#8220;tags&#8221; table), but in others you don&#8217;t (e.g. for the &#8220;data&#8221; table you probably don&#8217;t want two rows with the same &#8220;uri&#8221; value but different &#8220;uriid&#8221;).  Perhaps specify &#8220;{UNIQUE}&#8221; or similar where you just mean that a field value is unique but not part of the primary key?</p>
<p>4. As you seem to be using sqlite for storage, you probably want a simple integer primary key for every table.  Sqlite always includes such a key, and will try to name it to match a field in your schema.  So add a primary key to &#8220;tags&#8221; (you don&#8217;t want it to treat &#8220;tags.tagid&#8221; alone as the primary key) and &#8220;timetable&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Henstridge</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2581</link>
		<dc:creator>James Henstridge</dc:creator>
		<pubDate>Thu, 04 Jun 2009 01:50:09 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2581</guid>
		<description>I&#039;m not sure I understand why you are &quot;giving every registered application its own table&quot;.  If they all have the same schema as described by your diagram, why not just have a single table with foreign keys to both the &quot;app&quot; and &quot;data&quot; tables?

Also, you might want to consider using an ORM to make access to the database easier.  Storm might be a good choice (disclaimer: I am a Storm developer).</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure I understand why you are &#8220;giving every registered application its own table&#8221;.  If they all have the same schema as described by your diagram, why not just have a single table with foreign keys to both the &#8220;app&#8221; and &#8220;data&#8221; tables?</p>
<p>Also, you might want to consider using an ORM to make access to the database easier.  Storm might be a good choice (disclaimer: I am a Storm developer).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seif Lotfy</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2580</link>
		<dc:creator>Seif Lotfy</dc:creator>
		<pubDate>Wed, 03 Jun 2009 21:46:51 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2580</guid>
		<description>&lt;a href=&quot;#comment-2579&quot; rel=&quot;nofollow&quot;&gt;@Christian Hergert&lt;/a&gt; 
agree we will need to have a migration schema! Using JSON to transfer from ver 2 to ver 3 is a good deal</description>
		<content:encoded><![CDATA[<p><a href="#comment-2579" rel="nofollow">@Christian Hergert</a><br />
agree we will need to have a migration schema! Using JSON to transfer from ver 2 to ver 3 is a good deal</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christian Hergert</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2579</link>
		<dc:creator>Christian Hergert</dc:creator>
		<pubDate>Wed, 03 Jun 2009 21:42:34 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2579</guid>
		<description>I guess to clarify, this is where using a serialization format such as JSON or pickle and shoving in a b-tree really helps.  Because you can just add a version tag to the object. And then have object migrations that translate from a ver2 to a ver3 object and vice-versa.</description>
		<content:encoded><![CDATA[<p>I guess to clarify, this is where using a serialization format such as JSON or pickle and shoving in a b-tree really helps.  Because you can just add a version tag to the object. And then have object migrations that translate from a ver2 to a ver3 object and vice-versa.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christian Hergert</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2578</link>
		<dc:creator>Christian Hergert</dc:creator>
		<pubDate>Wed, 03 Jun 2009 21:41:00 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2578</guid>
		<description>Obviously you have a plugin contract, but what happens when you find that you need to change your internal storage schema?  How are you going to handle upgrading the database running on users desktops to your new schema without deleting all of there existing information?</description>
		<content:encoded><![CDATA[<p>Obviously you have a plugin contract, but what happens when you find that you need to change your internal storage schema?  How are you going to handle upgrading the database running on users desktops to your new schema without deleting all of there existing information?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seif Lotfy</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2577</link>
		<dc:creator>Seif Lotfy</dc:creator>
		<pubDate>Wed, 03 Jun 2009 21:18:35 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2577</guid>
		<description>&lt;a href=&quot;#comment-2576&quot; rel=&quot;nofollow&quot;&gt;@Christian Hergert&lt;/a&gt; 
The idea is that the applications will be sending its data
so when the application changes it has to change its plugin to send the data in the format we accept :)</description>
		<content:encoded><![CDATA[<p><a href="#comment-2576" rel="nofollow">@Christian Hergert</a><br />
The idea is that the applications will be sending its data<br />
so when the application changes it has to change its plugin to send the data in the format we accept <img src='http://seilo.geekyogre.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christian Hergert</title>
		<link>http://seilo.geekyogre.com/2009/06/first-attempts-on-improving-the-zeitgeist-db-before-guadec/comment-page-1/#comment-2576</link>
		<dc:creator>Christian Hergert</dc:creator>
		<pubDate>Wed, 03 Jun 2009 21:10:15 +0000</pubDate>
		<guid isPermaLink="false">http://seilo.geekyogre.com/?p=678#comment-2576</guid>
		<description>Do you have a plan to be able to migrate your schema as the application changes?  I&#039;ve yet to find an application that didn&#039;t have to adjust it&#039;s sql schema as they add new features and refactor over time.  It&#039;s why many still consider using basic b-trees and multiple indexes.

Eager to use it, Cheers</description>
		<content:encoded><![CDATA[<p>Do you have a plan to be able to migrate your schema as the application changes?  I&#8217;ve yet to find an application that didn&#8217;t have to adjust it&#8217;s sql schema as they add new features and refactor over time.  It&#8217;s why many still consider using basic b-trees and multiple indexes.</p>
<p>Eager to use it, Cheers</p>
]]></content:encoded>
	</item>
</channel>
</rss>

