Symisc UnQLite

An Embeddable NoSQL Database Engine

Star

Follow @symisc



Frequently Asked Questions.


  1. What is UnQLite

  2. Where do I get started

  3. Where can I find the simplest C program that embed UnQLite.

  4. Where can I find online support

  5. In which platforms UnQLite run

  6. What is the UnQLite license

  7. Is UnQLite thread-safe

  8. How can I contribute to the UnQLite development

  9. Where do I report bugs

  1. Is UnQLite a fork of SQLite

  2. Is UnQLite affiliated with SQLite

  3. What is the database size limit

  4. How can I create a foreign function (C Callback) and invoke it from my Jx9 code

  5. How can I create a foreign constant (C Callback) and expand its value from my Jx9 code

  6. How can I extract the content of a Jx9 variable from my C/C++ application

  7. How can I abort Jx9 program execution from my C callback

  1. What is UnQLite

    UnQLite is an embedded database library which implements a self-contained, serverless, zero-configuration, transactional NoSQL database engine.

    UnQLite is a document store database similar to MonoDB, Redis, Cassandra, etc. as well a standard Key/Value store similar to BerkeleyDB, LevelDB, etc.


  2. Where do I get started

    UnQLite is very easy to learn, even for new programmer. Here is some useful links to start with:

    UnQLite In 5 Minutes Or Less gives a high-level overview on the how to embed UnQLite in a host application.
    An Introduction To The UnQLite C/C++ Interface gives an overview and roadmap to the dozens of C/C++ interface to UnQLite.

    An Introduction To Jx9 - Jx9 is the scripting language which power the document store interface to UnQLite.

    The UnQLite Architecture gives a high-level overview on the architecture of the UnQLite database engine.
    Download some working examples from the download page.


  3. Where can I find the simplest C program that embed UnQLite.

    unqlite_kv_intro.c - An introduction to the Key/Value store interface to UnQLite.

    unqlite_doc_intro.c - An introduction to the document store interface to UnQLite.

    unqlite_csr_intro.c: - An introduction to the cursor interface.

    unqlite_tar.c: - Turn a UnQLite database into a TAR archive with O(1) lookup.

    The download page includes very useful working examples implemented in C to help you understand the UnQLite C/C++ API.


  4. Where can I find online support

    Visit the UnQLite support page for additional information.


  5. In which platforms UnQLite run

    UnQLite is written in ANSI C, compiles unmodified and should run in most platforms including restricted embedded devices with a C compiler. UnQLite is extensively tested on Windows and UNIX systems especially Linux, FreeBSD, Oracle Solaris and Mac OS X.


  6. What is the UnQLite license

    UnQLite is an Open-source product released under the 2-Clause BSD license. Visit the license page for additional information.


  7. Is UnQLite thread-safe

    Threads are evil. Avoid them.

    UnQLite is threadsafe and full re-entrant. But in order to be thread-safe, UnQLite must be compiled with the UNQLITE_ENABLE_THREADS compile time directive defined. If you are unsure if the UnQLite library you are linking against is compiled to be threadsafe you can call the unqlite_lib_is_threadsafe() interface to find out.


  8. How can I contribute to the UnQLite development

    If you want to involve in the UnQLite development process, please sign-up and post a message in the UnQLite devel mailing list or send an email to devel@symisc.net.

    If you have/can write binding for a foreign programming language, again post a message in the UnQLite forum, the devel mailing list or send an email to devel@symisc.net.


  9. Where do I report bugs

    You can report bugs using the online bug tracker. Visit the support page for additional information.


  10. Is UnQLite a fork of SQLite

    No, UnQLite is a completely independent product written from scratch, developed by Mrad Chems Eddine (chm@symisc.net) at Symisc Systems.

    Despite that, UnQLite share some SQLite low-level components such as the VFS (Virtual File System), the pager layer and the locking mechanism.


  11. Is UnQLite affiliated with SQLite

    Again NO, we consider SQLite a reference project but UnQLite is not affiliated with it. So, if you want to report a bug or some features, please do it here.


  12. What is the database size limit

    UnQLite it self (I mean, the UnQLite core), does not impose any limit on the target database since UnQLite works with pluggable run-time interchangeable storage engines, it's up the underlying KV store to set its own limit. Read the UnQLite architecture for additional information.


  13. How can I create a foreign function (C Callback) and invoke it from my Jx9 code

    Create a C/C++ function performing the desired computation then register it using the unqlite_create_function() interface. After that, the foreign function can be called from your Jx9 script.

    See this tutorial for additional information.


  14. How can I create a foreign constant (C Callback) and expand its value from my Jx9 code

    Create a C/C++ function responsible of expanding the constant name to the desired value then register it using the unqlite_create_constant() interface. After that, the installed constant can be expanded from your Jx9 script.

    See this tutorial for additional information.


  15. How can I extract the content of a Jx9 variable from my C/C++ application

    After succesul execution of your Jx9 script, simply call unqlite_vm_extract_variable() with the name of the target variable.


  16. How can I abort Jx9 program execution from my C callback

    If something goes wrong while performing the computation inside your foreign function and you want to abort the virtual machine execution immediately and thus to mimic the Jx9 die construct, simply return UNQLITE_ABORT instead of UNQLITE_OK.

    See this tutorial for additional information.



Symisc Systems
Copyright © Symisc Systems