Knarvik logo





Why use Knarvik?

How to use Knarvik



Why Knarvik is good

  • Knarvik gives you the strength of table-oriented programming and relational data modeling.
  • Knarvik writes code for you. Knarvik takes care of boring and error prone code like hashing and comparison functions, keeping indexes in sync with data, serialization and more. Concentrate on creative aspects of your work.
  • Knarvik ensures data integrity. Knarvik inserts relational and uniqueness constraints checks to catch bugs at runtime. These checks can easily be turned off for a release version of your program.
  • Knarvik is fast and lightweight. There are no layers between you and your data, all access is done through C pointers. Knarvik does not use any memory that it does not absolutely need. Knarvik works fine on mobile devices.
  • Knarvik is Public Domain and therefore FREE.
  • Knarvik has no external dependencies.
  • Knarvik is cross-platform on both sides. Autogenerated C++ code compiles with GCC and Microsoft Visual C++. The code generator itself is written in python and works where python works.


  • Fast access to not indexed fields of primitive types ( int, float, bool) and C-structs. Knarvik adds absolutely no overhead, you can write something like monster->Position.X = 10; where monster is a pointer to a table row.
  • Unicode support. Text is stored in the form of UTF16 strings.
  • One-to-one and one-to-many relations using plain pointers. Automatic management of two-way links.
  • Run-time relational integrity checks that can be turned off for release builds.
  • Hash-based indexes that are maintained automatically. Hashing and comparison functions are autogenerated.
  • Automatic serialization and deserialization.