Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
C HTML Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
Itzam/C A Concise Embeddable Database Engine in Standard C This document is a work in progress. I tend to learn by looking at code, and strongly suggest that you study the examples in the distribution's test directory for working examples of Itzam code. Yet I know how important hard docs can be, so I'm open to suggestions for improving or updating this document. Itzam/C manages data storage using B-tree indexes, storing key-value pairs. Keys are identifiers of any fixed-length type for their associated value, and there is a one-to-one relationship between keys and values. Itzam/C supports transactions with rollback, multiple threads accessing the same database, and other features not usually found in small database engines. In the real world, Itzam/C is the foundation of several business applications, including mission-critical systems running 24/365. Currently, Itzam is a C99 64-bit only engine enabled for threaded applications, written in C11. Itzam is not a SQL database, or something that can be accessed from ADO. You can build relational (or network, or...) database systems with Itzam as the underlying mechanic — but that really isn't what Itzam was meant for. The vast majority of applications do not need Oracle or SQL Server — they need a simple way to associate information with a key value, for retrieval. This is the niche Itzam occupies. Itzam has a long and varied history. It began as example code in my first book, C++ Components and Algorithms (1992). The original code was meant to teach C++, yet several people contacted me asking if they could use it in various projects. Some even offered to pay for the code. And so I reworked the book code into something worthy of production code. After many versions (and a side-trip into Java under the name "Jisp"), I arrived at the Itzam you see today. The current reference version is written in C for a variety of reasons. C produces small code and can be wrapped in various other programming languages. By writing in Standard C, I maintain portability. The current code has seen production and commercial use across PCs, cell phones, and Macs. Why "Itzam"? Naming projects is always difficult; I sometimes think every word in English has been appropriated by someone. So I've had to stretch my linguistic horizons. "Itzam" is one of several Mayan words for iguana; given the fondness of iguanas for trees, and the presence of an iguana in my house, the name seemed rather fitting. The Itzam logo (and all other site art) was created by my eldest daughter Elora, using a combination of commercial and open source tools. License From version 7.0 forward, Itzam is licensed under the FreeBSD License (aka, the Simplified BSD License). It is as follows: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY SCOTT ROBERT LADD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SCOTT ROBERT LADD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the author alone, and should not be interpreted as representing the official policies, either expressed or implied, of anyoen other than Scott Robert Ladd. Older versions were released under various incarnations of the GPL. I won't bore you with details of why I've meandered through various Open Source/Free Software licenses; suffice it to say that the balkanization and politics of the Free Software movement have rubbed me very raw. Individual and corporate licensing is available under a closed-source license; I also provide maintenance contracts and custom development. For such matters, please contact me at firstname.lastname@example.org or email@example.com. See itzamdoc.html for more documentation.