資料儲存方式
- sqlite3:
sqlite3
將資料儲存在單一的檔案中,支援關聯資料模型和 SQL 查詢。 - lowdb:
lowdb
將資料儲存在 JSON 檔案中,所有資料都以樹狀結構儲存,支援簡單的查詢和修改。 - levelup:
levelup
使用鍵值對的方式儲存資料,底層可以使用 LevelDB、SQLite 或其他支援的儲存引擎。 - mongodb-memory-server:
mongodb-memory-server
在記憶體中模擬 MongoDB 實例,所有資料儲存在 RAM 中,適合快速讀寫但不持久化。 - pouchdb:
pouchdb
將資料儲存在瀏覽器的 IndexedDB 或 WebSQL 中,支援離線儲存和資料同步。 - nedb:
nedb
使用檔案系統儲存資料,支援嵌入式模式和檔案模式,資料以 JSON 格式儲存。
查詢能力
- sqlite3:
sqlite3
完全支援 SQL 查詢,包括 JOIN、GROUP BY、ORDER BY 等,功能強大且靈活。 - lowdb:
lowdb
支援簡單的查詢和過濾,提供鏈式 API 來操作資料,但不支援複雜的 SQL 查詢。 - levelup:
levelup
提供基本的鍵值查詢,支援範圍查詢和串流操作,但不支援複雜的查詢語言。 - mongodb-memory-server:
mongodb-memory-server
完全支援 MongoDB 的查詢語言,允許進行複雜的查詢、聚合和索引。 - pouchdb:
pouchdb
支援基本的查詢和索引,並且可以使用 MapReduce 進行更複雜的查詢。 - nedb:
nedb
支援類似 MongoDB 的查詢語法,包括過濾、排序和索引,但不支援聚合。
適用場景
- sqlite3:
適合嵌入式應用、小型網站或需要輕量級關聯資料庫的專案。
- lowdb:
適合小型專案、快速原型設計或需要簡單資料儲存的應用程式。
- levelup:
適合需要高效能和可擴展性的應用程式,如實時資料處理、串流應用等。
- mongodb-memory-server:
適合單元測試、持續整合和開發環境,無需安裝實體資料庫。
- pouchdb:
適合需要離線功能和資料同步的應用程式,如行動應用和離線網頁應用。
- nedb:
適合小型應用程式、桌面應用或需要輕量級資料儲存的專案。
範例程式碼
- sqlite3:
sqlite3
範例程式碼const sqlite3 = require('sqlite3').verbose(); const db = new sqlite3.Database(':memory:'); db.serialize(() => { db.run('CREATE TABLE user (id INT, name TEXT)'); const stmt = db.prepare('INSERT INTO user VALUES (?, ?)'); stmt.run(1, 'Alice'); stmt.finalize(); db.each('SELECT * FROM user', (err, row) => { console.log(row); }); }); db.close();
- lowdb:
lowdb
範例程式碼const { Low, JSONFile } = require('lowdb'); const db = new Low(new JSONFile('db.json')); db.read(); // 設定預設資料 db.data ||= { posts: [] }; // 新增資料 db.data.posts.push({ id: 1, title: 'Hello World' }); // 儲存資料 await db.write(); console.log(db.data);
- levelup:
levelup
範例程式碼const levelup = require('levelup'); const leveldown = require('leveldown'); const db = levelup(leveldown('./mydb')); db.put('key', 'value', (err) => { if (err) return console.error('Error writing to database:', err); db.get('key', (err, value) => { if (err) return console.error('Error reading from database:', err); console.log('Value:', value); }); });
- mongodb-memory-server:
mongodb-memory-server
範例程式碼const { MongoMemoryServer } = require('mongodb-memory-server'); const mongoose = require('mongoose'); const mongod = new MongoMemoryServer(); const uri = await mongod.getUri(); await mongoose.connect(uri); const Schema = mongoose.Schema; const TestSchema = new Schema({ name: String }); const TestModel = mongoose.model('Test', TestSchema); await TestModel.create({ name: 'Test' }); const docs = await TestModel.find(); console.log(docs); await mongoose.disconnect(); await mongod.stop();
- pouchdb:
pouchdb
範例程式碼const PouchDB = require('pouchdb'); const db = new PouchDB('mydb'); db.put({ _id: 'doc1', title: 'Hello PouchDB' }).then(() => { return db.get('doc1'); }).then((doc) => { console.log(doc); }).catch((err) => { console.error(err); });
- nedb:
nedb
範例程式碼const Datastore = require('nedb'); const db = new Datastore({ filename: 'data.db', autoload: true }); db.insert({ name: 'Alice' }, (err, newDoc) => { db.find({}, (err, docs) => { console.log(docs); }); });