commit 85e8feaec5ae5a9ad25441723937dafe685f9a33
parent 636f1a7874da534142cbde22eb33dc8514c43ac1
Author: Florian Dold <florian@dold.me>
Date: Fri, 8 Jan 2021 15:53:23 +0100
idb student project
Diffstat:
1 file changed, 35 insertions(+), 0 deletions(-)
diff --git a/student-projects/indexeddb-node.txt b/student-projects/indexeddb-node.txt
@@ -0,0 +1,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