SQL inMemory.js

X5u5pdcasyiwuqk4gymh
A in-memory SQL database completely written in JavaScript - especially for client side data
Thumbnail
Carl-Philip Hänsch
Technology
Dresden
Germany
1 Team Member

Short Summary

SQL and relational databases play an important role in storing and processing data. SQL is a powerful language that allows to formulate complex queries on relational data. While there are SQL engines on servers, desktop, mobile devices, there is no full SQL engine in the browser.

We want to create a in-browser SQL engine completely written in JavaScript. It will support all SQL operations and will be able to even compute the most complex SQL queries.

What We Need & What You Get

Over the period of developing SQLinMemory.js, we cannot work on our daily business. To compensate our effort, we would like to have additional backing by the community while developing OpenSource software.

Early versions of the library are already available but this should not hinder you to donate anyway. We will try to keep the master branch absolutly stable so you can rely on everything that is in the master branch. We chose the ISC license in order to provide the library to everyone. Pull requests will be accepted when they do not impact the stability.

Why you need it

  • Write fat client applications in JavaScript using a SQL database
  • Reuse the same code on server and client side to have SQL-based client side cache of data
  • Use it as in-Memory database in Node.js
  • Use it in PhoneGap
  • Create online SQL tutorials
  • Provide safe SQL scripting on client side
  • Hey, it's cool to have everything in JavaScript!

The technique

SQLinMemory.js will have a tuple oriented storage. There will be cursors that read from tables and cursor stability will be guaranteed. SQL queries will be broken down into selections, projections, joins and group operations. A optimizer will reorder these operations and replace cross joins by index joins whenever possible.

The storage will be completely JSON-serializable so you can easily dump and/or load all data of the database. We will use raw JavaScript objects as storage for the data but maybe we will also use HTML5 extensions to access semi-persistent storage types.

SQLinMemory.js is designed for small data that fits into RAM and needs some complex computation on it. It should be a drop-in replacement for full-scale SQL engines and will provide the same interface, so you write your app once with SQL statements and can run it either in node.js with mySQL or in the browser with SQLinMemory.js.

How else can I help?

Besides indiegogo you can do the following things:

$5USD
raised by 1 person in 1 month
0% funded
0 time left
$8,000 USD goal
Flexible Funding This campaign has ended and will receive all funds raised.
Campaign Closed
This campaign ended on February 18, 2014
Select a Perk
  • $5USD
    Subscribe

    You get a mail when the first usable version of the library is finished.

    0 out of 500 claimed

  • $10USD
    Testcase

    You want to use the library and don't know if it can process all your queries? Just take this and send me your testcase (example table and SQL statement). We will guarantee that this will work in all releases.

    0 out of 1000 claimed

  • $25USD
    Your name in the documentation

    Your name will be in a example database in the online tutorials

    0 out of 200 claimed

  • $100USD
    Thank you Coffee Cup

    You will receive a coffee cup with a funny individualized SQL statement printed on it

    0 out of 25 claimed

  • $3,000USD
    Feature request

    We will add a feature you request to the SQL engine. This may be a storage backend for your JSON API or a fancy non-standard SQL statement like MERGE or UPSERT.

    0 out of 15 claimed

  • $5,000USD
    Compatibility to IE

    If you like Microsoft or have some other reasons to use Internet Explorer, take this.

    0 out of 1 claimed

Do you think this campaign contains prohibited content? Let us know.