Nepomuk feature freeze No. 2
Sebastian TrĂ¼g
strueg at mandriva.com
Tue Sep 18 17:18:10 BST 2007
Hi again,
after the last discussion I could not sleep well and that resulted in Soprano
now having three interfaces: TCP, Unix sockets, and DBus. The performance
results are not really what I expected and by far not as impressive as I
thought.
Task | TCP | Unix Socket | DBus |
--------------------------------------------------------------
adding one statement | 1 | 1 | 2 |
adding list of 1000 statements | 1151 | 1207 | 1343 |
adding 1000 statements | 914 | 958 | 1080 |
(all values in milliseconds)
So DBus is slower but only marginal. What confuses me here is that the TCP
interface is faster than the unix socket one. That seems a bid odd.
Anyway, I don't think TCP is the right solution for now as it would require
the introduction of permission handling. And seeing that unix sockets and
DBus (after all, DBus uses unix sockets, too) do not differ that much it is
probably best to stick with the well known, reliable DBus interface. After
all, it will make programming against it from other languages much easier.
Now, why do I write this mail at all if I want to stick with the DBus
interface. Well, at the moment Nepomuk in kdelibs uses the Nepomuk middleware
I implemented some month back when there were plans in the Nepomuk project
itself for a federation. That would have meant that Nepomuk-KDE could have
reused services implemented in other languages (most likely java since
everything in Nepomuk is hacked in java). Now that the Nepomuk project
dropped the idea of the federation the middleware as it is in kdelibs only
introduces unnecessary complexity which I would like to remove (So far we
only have one Nepomuk-KDE service anyway: the RDF repository; and there is no
reason to not use KDE service technologies now.)
In its place I would like to use the new Soprano DBus interface. it has the
following advantages:
* Uses the clean and (IMHO) very nice Soprano 2 API
* Is completely iterator-based which means that handling large quantaties
becomes cleaner.
* We do not duplicate interfaces (Soprano + the one in kdelibs).
Replacing the middleware would mean:
* Updating Soprano in kdesupport to version 2 (currently in
branches/work/soprano2)
* removing kdelibs/nepomuk/middleware entirely
* small internal changes to kdelibs/nepomuk/core to make it use Soprano
* Change kdebase/runtime/nepomuk/coreservices to a plain KDE service
without Nepomuk service registration and update it to Soprano 2
including the new Soprano 2 DBus interface
The public API would only change in one position (except for the removal of
the middleware which no one uses anyway AFAIK):
* Nepomuk::ResouceManager::serviceRegistry() removed
Well, that is it I think.
Your comments please.
Cheers,
Sebastian
More information about the kde-core-devel
mailing list