Upgrade to Lion
Richard Gaskin
ambassador at fourthworld.com
Thu May 31 10:47:20 EDT 2012
Kay C Lan wrote:
> As for SQLite being ubiquitous on moblie devices, in my own opinion it's
> due more to it's price, like mySQL and gmail. If people had to pay $5 a
> month for the privilege I think suddenly the numbers would shift. Just
> because a billion people do, doesn't mean it's the best.
True, but sometimes it works the other way as well. Like Torvalds says,
"Given enough eyeballs all bugs are shallow."
Consider the power of WebKit, MySQL, the BSD-originated Darwin kernel
that drives your Mac, and more - all free an open, all performing at
least on par with many proprietary alternatives.
With the growing ubiquity of FOSS, the value of software is not easily
measured by the purchase price of a license. A better measure is the
number of hours that went into making it.
SQLite is public domain so a great many eyeballs have been looking at
that code and optimizing it for some time. It's not perfect, and there
are no doubt many opportunities for further optimization, but there's a
reason it's so commonly used.
> Earlier this year I took 130 million data points from the gps database and
> fed them into my own SQLite and Valentina dbs. Basically I needed to find
> the gradient that represented optimum rate of climb. To do this I needed to
> locate all hills, sift out those that where downhill rather than uphill,
> remove any instance where drafting was a factor and then seasonally, time
> of day, compare to extract trends.
>
> The sql statements were not that complex, just a LOT of toing and froing
> between LC and the db. I soon abandoned SQLite as it was clear that
> Valentina was getting the answers quicker.
Ruslan's genius is noteworthy, but perhaps the smartest decision he made
with Valentina was to design it using a columnar data store.
Columnar stores are radically different from row-based stores, such as
most SQL-based implementations use. For the relatively low cost of some
additional overhead in updates, columnar stores allow optimized searches
in ways that row-based system can rarely match.
This page provides a good intro to the differences:
<http://en.wikipedia.org/wiki/Column-oriented_DBMS#Benefits>
Additionally, the structure of an SQLite DB, particularly the indexing,
can radically improve performance. While it's unlikely that it could be
optimized to beat Valentina, there may be opportunities to speed up the
SQLite DB to be at least closer to it.
> Maybe it has more to do with the speed LC talks to each db. I used the LC
> db commands for SQLite whilst I've migrated across to using API calls for
> Valentina.
That's another valuable point. The LC externals API is somewhat limited
and carries a bit of overhead. How that plays out with each external
can't be known unless we were in a position to examine the source of each.
> But what about Spotlight where the data is presented in a unknown vast
> assortment? I can do a search on 'Borrower' and 'Latitude', because
> Spotlight can look into the home inventory and gps dbs. How could Apple
> possibly have known that such fields would be added and whether the field
> would hold a constant 2 chars or 0-2K chars or a blob of binary. As far as
> I know there is limit of 62 dbs which SQLite can attach to. How close is
> Spotlight to reaching that limit, I've no clue, but Versions has just added
> one more, and as anything approaches it limit, it slows.
While Apple includes SQLite and recommends devs use it for things like
prefs files, I don't believe they use it for Spotlight. My
understanding is that Spotlight uses a proprietary data store.
> But I'm often wrong. And I see why, once all these dbs are set-up, indexed
> and connected, there should be very neglible processing required to just
> keep updating the data.
So it might seem to those of us who use DB APIs but never have to
implement the driver. As an exercise I've experimented with crafting a
variety of data storage schemes from scratch. It taught me many things
about the challenges of efficiently supporting both reads and writes,
but mostly it taught be to appreciate the excellent work so many have
already done with such things. :)
> I'm assured that Linux is a zippier resource dieted OS. Does it have a
> variety of SQLite dbs, all interconnected, and keeping track of your every
> move?
Linux being a diverse ecosystem, not surprisingly there are many. :)
Debian, Ubuntu, Mint and others use Zeitgeist, and Fedora and its family
use Tracker:
<http://www.linuxforu.com/2011/10/exploring-software-gnome-and-semantic-desktop/>
Among other uses, Zeitgeist plays a role in supporting the new HUD in
Ubuntu, which is sort of like a mix between Spotlight and Quicksilver
but taken to a deeper level of interoperability:
<http://www.youtube.com/watch?v=w_WW-DHqR3c>
--
Richard Gaskin
Fourth World Systems
Software Design and Development for the Desktop, Mobile, and the Web
____________________________________________________________________
Ambassador at FourthWorld.com http://www.FourthWorld.com
More information about the use-livecode
mailing list