Skip to content

Itzam/C is an embedded database engine written in Standard C.

Notifications You must be signed in to change notification settings

hallelujah-shih/itzam

 
 

Repository files navigation

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 many business applications, including mission-critical systems running 24/365.

Currently, Itzam is a C99 64-bit only engine enabled for threaded applications. 
I will be updating this for the latest C standard.
I may be removing Windows support in the future, as it clutters the code.

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 scott.ladd@coyotegulch.com or scott.ladd@gmail.com.

See ItzamDocumentation.html for complete API documentation.

About

Itzam/C is an embedded database engine written in Standard C.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 79.8%
  • HTML 18.7%
  • Other 1.5%