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). http://sqlite.org/ Languages taking advantage of SqLite: * The latest PhpLanguage version PHP5 comes bundled with it. ** ''But the PHP5 Windows versions are plagued with problems with regard to SqLite integration. '' *** WorksForMe * There is an excellent PerlLanguage module for it, called DBD::SQLite. (http://search.cpan.org/perldoc?DBD::SQLite) * And also a Ruby implementation: http://raa.ruby-lang.org/list.rhtml?name=ruby-sqlite * According to the author of SqLite, ''SQLite was designed from the beginning to be used with Tcl.'' See http://www.tcl.tk/community/tcl2004/Papers/D.RichardHipp/drh.html * Instead of a license, the SQLite source code offers a blessing: 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. . ** ''What, they gonna rename it "SQLennon" now?'' *** It was developed to launch missiles, so it needs all the karma it can get. * ... and many others: http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers There's also an experimental ODBC driver: http://www.ch-werner.de/sqliteodbc/ 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? '''A''': Generally, yes, but their web page says that they also have wrappers to support linking to CeePlusPlus, PythonLanguage, and RubyLanguage. 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. Failing to support such external linkage actively interfered with the adoption of languages such as SmalltalkLanguage and LispLanguage back in the 1980s. ---- '''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) ''That is asking for too much in my opinion. Use PostgreSql or MySql if you really need something that big. It reminds me of the expections of those who want MS-Access to scale like Oracle.'' 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: http://physics.nist.gov/cuu/Units/prefixes.html 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: http://physics.nist.gov/cuu/Units/binary.html ''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.'' That's... the same people, right? ''GoodCatch. Though now that you mention it, sometimes ItDepends on who's close at hand :o)'' ---- See also: DynamicRelational, NimbleDatabase ----- CategoryDatabase