TY - JOUR
T1 - JDap
T2 - Supporting in-memory data persistence in javascript using Intel's PMDK
AU - You, Litong
AU - Xu, Hao
AU - Zhang, Qipeng
AU - Li, Tianyou
AU - Li, Chen
AU - Chen, Yuting
AU - Huang, Linpeng
PY - 2019/12
Y1 - 2019/12
N2 - Data persistence is a feature that the data needs to live longer than its creator. The state-of-the-art is in-memory data persistence, requiring data in the memory to be persistent even when the application crashes. So far in-memory data persistence has been supported in many programming languages such as C, C++, and Java. However, it has not yet been well supported in JavaScript, a popular scripting language for software development. To solve this problem, we introduce JDap, an extension to JavaScript's runtime and execution engine, to support in-memory data persistence in JavaScript using Intel's Persistent Memory Development Kit (PMDK). JDap consists of (1) a JavaScript persistent object pool that serves as a heap in which persistent objects can be created, managed, and accessed safely and consistently. In particular, this pool supports shared memory parallelism, allowing persistent data to be accessed in parallel; (2) a set of JavaScript APIs that provides programmers with supports in managing and accessing persistent data in an easy-to-use and safe manner. We have implemented JDap and evaluated it against two database-supported data persistence styles (MongoDB's object store and indexedDB's binary store) on micro-benchmarks and real-world applications. Our evaluation shows that JDap outperforms object store by 1.6 × and outperforms binary store by 24.6 × . We have also evaluated JDap against Extended Memory Semantics (EMS) on data-intensive tasks. The results show that JDap outperforms EMS by 2 ×.
AB - Data persistence is a feature that the data needs to live longer than its creator. The state-of-the-art is in-memory data persistence, requiring data in the memory to be persistent even when the application crashes. So far in-memory data persistence has been supported in many programming languages such as C, C++, and Java. However, it has not yet been well supported in JavaScript, a popular scripting language for software development. To solve this problem, we introduce JDap, an extension to JavaScript's runtime and execution engine, to support in-memory data persistence in JavaScript using Intel's Persistent Memory Development Kit (PMDK). JDap consists of (1) a JavaScript persistent object pool that serves as a heap in which persistent objects can be created, managed, and accessed safely and consistently. In particular, this pool supports shared memory parallelism, allowing persistent data to be accessed in parallel; (2) a set of JavaScript APIs that provides programmers with supports in managing and accessing persistent data in an easy-to-use and safe manner. We have implemented JDap and evaluated it against two database-supported data persistence styles (MongoDB's object store and indexedDB's binary store) on micro-benchmarks and real-world applications. Our evaluation shows that JDap outperforms object store by 1.6 × and outperforms binary store by 24.6 × . We have also evaluated JDap against Extended Memory Semantics (EMS) on data-intensive tasks. The results show that JDap outperforms EMS by 2 ×.
KW - Application programming interface
KW - In-Memory data persistence
KW - Javascript
KW - Object pool
KW - Persistent memory development kit
UR - http://www.scopus.com/inward/record.url?scp=85074582853&partnerID=8YFLogxK
U2 - 10.1016/j.sysarc.2019.101662
DO - 10.1016/j.sysarc.2019.101662
M3 - Journal article
AN - SCOPUS:85074582853
SN - 1383-7621
VL - 101
JO - Journal of Systems Architecture
JF - Journal of Systems Architecture
M1 - 101662
ER -