Re: [Tracker] support for other database backends?



Hi Martyn,

On 11.5.2012 17:18, Martyn Russell wrote:
they're faster. Last time I checked (a while back), MySQL was faster
than PostgreSQL for querying. Just wondering why you've thought of
PosgreSQL over MySQL really.

PostgreSQL is the only one that has LISTEN/NOTIFY system (especially nice in 9.x series) with C function callbacks. Extremely useful for notifying about updates in multi-client environment.

I wasn't aware of the D-Bus ordering issue? Though I believe the store
does collapse duplicate events. It also has been designed to work on
embedded systems with less resources, so we have various optimisations
to avoid spamming clients with events which are useless.

It still involves single-threaded central daemon that copies everything around. So everything goes through double-copy. This also messes up kernel scheduler because it hides inter-process scheduling dependencies.

Indeed. With the store, we really needed to be sure data was written in
cases where you had instant power outage (e.g. you drop your phone down
the toilet). So while caches are good, syncing is needed to some extent.

In most cases, like Nokia N9, you cannot have sudden power removal, except if the device gets completely broken and in that case it doesn't matter anymore anyway. However, excessive syncing causes kernel to trigger filesystem barriers which causes severe filesystem stalls. It also causes flash wear.

PostgreSQL is nicer to work with than MySQL from what I recall. We would
gain a lot from a bigger database, but likely loose a lot on embedded
systems and the efficiencies we made there. That's partly why we wanted
to do some testing on this some months ago, to figure if the switch was
worth it.

I was running postgre server for long time on my Nokia N900 proto and nobody could notice any negative impact due to it. It can be tuned to be fairly light. And it already consumes less CPU time than SQLite in many real use cases.

I think it should implemented such way that the database backend could be build-time selected to be either sqlite or postgre. Not being exclusively either one.



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