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
 ____________________________________________________________________
 ambassa...@fourthworld.com                http://www.FourthWorld.com

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to