summaryrefslogtreecommitdiff
path: root/student-projects/indexeddb-node.txt
blob: 9551f4906d786c8c2165a39f371865c20e9348c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Project Title: High performance backend for IndexedDB in Node.JS with TypeScript

Prerequisites:  Basic knowledge of JavaScript/TypeScript, basic familiarity
with relational and non-relational databases.  Familiarity with SQL and
node.js is a plus.

IndexedDB is the standardized transactional database system for the Web
platform.  Progressive Web applications and browser extensions use IndexedDB to
manage large amounts of structured data.

While IndexedDB is supported by a significant majority of browsers currently in
use, support for IndexedDB in JavaScript applications outside of the browser is
severely lacking.  This makes it difficult to write applications that use
persistent transactional data storage and can run both in the browser and on
other platforms such as Node.JS.

The standardized API of IndexedDB is relatively small and simple when compared
to SQL dialects, and as such it is relatively simple to write an implementation
of IndexedDB.

The idb-bridge package (developed as part of the GNU Taler project) already
provides a TypeScript/Node.JS implementation of the IndexedDB API with a single
JSON file as a backend.  However, this implementation suffers from major
performance issues and does not support concurrent access.

The goal of this project is to design, implement and benchmark a new storage
backend for IndexedDB in TypeScript based on the existing bridge-idb project.
A potential candidate for the improved storage backend is SQLite3, but other
choices (such as LevelDB) can be evaluated as well.

Further resources:
* https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
* https://www.w3.org/TR/IndexedDB/
* https://git.taler.net/wallet-core.git/tree/packages/idb-bridge
* https://hg.mozilla.org/mozilla-central/file/tip/dom/indexedDB/Key.cpp