SQLite is a PublicDomain CeeLanguage library that implements an embeddable SQL database engine. Programs that link with the SQLite library can have SQL database access without running a separate RDBMS process. In that sense, it behaves more like a DesktopDatabase (minus the GUI).
Languages taking advantage of SqLite:
May you do good and not evil May you find forgiveness for yourself and forgive others May you share freely, never taking more than you give..
Here's a tutorial on using the transaction/rollback trick for TestDrivenDevelopment with RubyLanguage and SqLite: http://groups.google.com/group/comp.lang.ruby/msg/d41f49caa020bd5b
Linking SQLite to a C application
Q: Does the fact that it is a C library mean that it would be easier to link a SQLite database to a C program than any other database?
It's also often the case that language creators go out of their way to make sure that there is some way to link programs written in their language with C libraries/programs, precisely because C is the LinguaFranca of portable libraries.
Record Handling capacity
Q: Can SQLite handle a great number of records?
A: Yes, no, and maybe, depending on what you think "a great number of records" means in the database world.
500 thousand records is considered somewhat small in the database world, not "a great number". Non-database people think in different magnitudes than does the database world. Terabyte databases were considered large not that long ago, but these days it's gotten to the point where hundred terabyte databases are quite commonplace.
Sqlite 3 will get rid of that silly limitation of ~2^32 rows, as well as most similar hard limits. --AdamBerger
I've stored sqlite3 databases of over 8 gigs on disk, but vacuum seems to have stopped working after a couple gigs, so it's hard to say how big it really is. Might have been that I ran out of disk space to create the copy, I don't recall. You probably want to graduate to FireBird if you want to scale up that DB without requiring a RDBMS manager present (FB can operate as a library or server, not sure if the file formats are compatible though)
http://stackoverflow.com/questions/784173/what-are-the-performance-characteristics-of-sqlite-with-very-large-database-file has info on using SQLite with large (<=160GB) databases
"Think of SQLite not as a replacement for Oracle but as a replacement for fopen()" - http://www.sqlite.org/about.html
Hundred Terabytes is ... megs.
You may be interested in the international standard list of prefixes at the National Institute of Standards:
Tera is 10^12, mega is 10^6, so terabyte equals 10^6 (a million) megabytes, or if you prefer, one thousand gigabytes.
Gummo, Atto, Zepto, and Yocto, the MarxBrothers who did not go into the movies. :-)
There are additional nitpicks on the subject. Computers like to number things in powers of two rather than ten, so you never know if "megabyte" really means 10^6 = 1,000,000 bytes, or whether someone actually means 2^20 = 1,048,576 bytes, but the two are only different by a few percent anyway. Salesmen pick whichever numbers are most impressive, and even engineers find it handy to pretend, for the purpose of approximation, that 2^10 equals exactly 1,000 and 2^20 equals exactly one million and 2^30 equals exactly one billion, etc. "Close enough for government work."
You may also be interested in the International Electrotechnical Commission (IEC) International Standard prefixes for binary multiples, approved in December 1998, and the "historical context" for their invention:
All of which is nothing more than a cop-out to manufacturers to excuse scrimping on space and overstating their capacities. A byte is 8 bits, a word is 16 bits, a dword 32, etc. Measuring bits and bytes in base 10 is NotHelpful?. I have been known to slap people in the face whenever I see people writing that little "i" before the B.