Foreword


When I first began composing SQLite in late May of 2000, I never imagined that a few years later it would be widely used in consumer electronics devices and in countless programs and that people I barely know would be writing books about it. Like most other open-source software, SQLite grew out of a personal need and was intended primarily for my own use. In January of 2000, I was working with a team from General Dynamics on a software project that was connected to an Informix database. When Informix works, it works well, but we were having problems getting it to start reliably when the host computer was rebooted. We substituted PostgreSQL for Informix on our development systems, but even that database was a hassle to administer. While I was struggling to deal with these issues, the idea arose to write a simple SQL database engine that was serverless, read ordinary disk files, and could be statically linked into the application. I took no action on the idea then. But five months later, I was without a contract for a few months and so I started writing SQLite with the thought that it would be handy the next time a similar problem appeared. The basic database engine was running within a day and was stable within a couple of weeks. Development was interrupted for a month when my wife, Ginger, and I traveled to central Africa to visit friends. After our return and exactly four years ago from the day that I write this, I posted SQLite version 1.0 on the web.

Version 1 of SQLite attracted a small number of users. But the library was of limited utility because it employed GDBM as a storage back end. GDBM has no transaction support and it is based on hashing, so indices could not be used to optimize queries that are constrained by inequalities. To address these limitations, I began working in my spare time on a replacement B-Tree back end in the spring of 2001. Several months passed. I remember that I was fixing some last-minute bugs in the new system one morning when Ginger called from work to tell me that an airplane had just crashed into the World Trade Center in New York. Version 2.0 was released a couple of weeks later, amid a zeitgeist of sadness.

The release of SQLite version 2.0 triggered a surge of interest. Within weeks, Christian Werner published the first SQLite add-on, an ODBC driver. Dozens of other wrappers would soon follow. Over the next 12 months, support was added for INTEGER PRIMARY KEY, for VIEWs, and LEFT OUTER JOINs. Dan Kennedy contributed code to implement trIGGERs. By the fall of 2002, SQLite was in essentially the same form as you find it today. All through that year and since, more and more people began using SQLite in their programs and products. In recent months, the SQLite website has received visitors from around three thousand distinct IP addresses per day. Source code downloads average more than 400 per day with almost twice that many binary downloads. Total website traffic is approaching one gigabyte per day. SQLite bindings now exist for over two dozen languages including Perl, Python, PHP, Tcl/Tk, Ruby, Lisp, and Java. SQLite has been incorporated into many popular open-source projects, such as Kexi, monotone, Mozilla, and Popfile to name a few. I have been told, in confidence, of many commercial software projects built around the library. SQLite has also been spotted in consumer electronics devices such the Philips HDD060 MP3 player and in the D-Link DSM-320 Wi-Fi Media Player. No doubt countless other uses of SQLite have escaped my notice.

From its inception, the primary design goal of SQLite has been simplicity. I have tried to keep SQLite simple to administer, simple to operate, simple to program, and simple to maintain and customize. Many people tell me that they like SQLite because it is small, fast, and reliable. Reliability is a consequence of simplicitywith less complication, there is less to go wrong. Small size and fast performance are just happy accidents. Simplicity is the ultimate goal. In this way, SQLite is different from enterprise-class database engines that give you most everything you could ever want, except for simplicity. SQLite may have fewer features, but it is much simpler to use and operate, which is more important than a rich feature set in many situations. This is not to say that SQLite will not add new features over time. SQLite will continue to advance and growwe are currently looking at adding support for ALTER TABLE and for foreign keys, for examplebut as long as I control its development, SQLite will continue to be as simple as I can make it.

Except for a few lines here and there, most of the code in SQLite was written by me and Dan Kennedy. But we have not been working in isolation. Suggestions and criticisms from the SQLite user community have been invaluable in helping to direct the library's progress. And though no outside code has been copied into SQLite, other software has been essential in the process of building and testing SQLite. Special thanks go to John Ousterhout and his Tcl scripting language. We would have never been able to get SQLite working had it not been for the Tcl language, which allowed us to write over 33,000 lines of regression test scripts. Other infrastructure software has also played a key role. There would be no Windows port of SQLite except for the MinGW build environment. SQLite would never even have been started but for the innumerable hordes of developers that have given us X11, GNU, and Linux. SQLite is not a work unto itself but rather a very small and insignificant part of a much larger software ecosystem.

I have formally dedicated my contributions to SQLite to the public domain, and I insist that other contributors do likewise. (I keep a file of signed copyright releases in the fire safe at my office.) This means that there are no legal restrictions on copying SQLite. My name appears nowhere in the code. You are free to do with SQLite whatever you want. I hope that you find SQLite to be helpful and that you will use it for good. You are welcome to use SQLite for commercial purposes and if you do, I wish you a good profit. Regardless of how you use it, I hope the fact that you have received SQLite freely will inspire you to give something back in returnnot to me personally but to the community or to the world as a whole. Finally, and most importantly, I encourage you to find forgiveness for your own soul and to forgive others in return. Be at peace.

D. Richard Hipp
Charlotte, NC
August 17, 2004



    SQLite
    SQLite
    ISBN: 067232685X
    EAN: 2147483647
    Year: 2004
    Pages: 118
    Authors: Chris Newman

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net