DB Javascript Ringan untuk digunakan di Node.js [ditutup]

130

Siapa pun yang tahu basis data yang ringan namun tahan lama, ditulis dalam Javascript, yang dapat digunakan dengan Node.js.

Saya tidak ingin 'bobot' dari solusi (hebat) seperti Mongo atau Couch. Basis data JS dalam memori yang sederhana dengan kemampuan untuk tetap menggunakan disk sebagai file sudah cukup. Saya hanya akan menggunakannya untuk menyimpan sejumlah kecil data.

Persyaratan:

  • dapat berjalan dalam proses dengan aplikasi server node.js
  • dapat menyimpan seluruh basis data ke disk dan memulihkan setelah kegagalan
  • TIDAK perlu untuk penulisan atom atau dukungan transaksi
  • pertanyaan cepat dan menyortir akan menyenangkan
  • hanya perlu mendukung volume data kecil, hingga total 1MB

Saya telah menemukan TAFFY db sejauh ini tetapi sepertinya tidak dioptimalkan untuk digunakan di Node.js. Adakah yang melihat apa yang saya cari di luar sana?

Terima kasih

ConfusedNoob
sumber
Coba gunakan github.com/rvagg/node-levelup
hellboy

Jawaban:

6

Saya hanya akrab dengan Mongo dan Couch, tetapi ada juga yang bernama Persistence .

Steve
sumber
14
Apakah Anda masih menganggap ini solusi? komit terakhir adalah 7 tahun yang lalu.
mjwrazor
3
Komit terbaru pada 31 Maret 2010.
Deilan
1
Saya pikir Anda sedang mencari PersistenceJS yang
Chamilyan
1
bagaimana mungkin @Chamilyan lebih baik
Zee
103

Saya memiliki persyaratan yang sama seperti Anda tetapi tidak dapat menemukan database yang sesuai. nStore menjanjikan tetapi API hampir tidak cukup lengkap dan tidak terlalu koheren.

Itu sebabnya saya membuat NeDB , yang merupakan basis data yang tidak terlalu tergantung untuk proyek Node.js. Anda dapat menggunakannya dengan sederhana require(), tetap, dan API-nya adalah subset yang paling umum digunakan dari MongoDB API yang sangat terkenal.

https://github.com/louischatriot/nedb

Louis Chatriot
sumber
8
nedb sangat bagus, tetapi perlu diketahui bahwa Anda tidak dapat menggunakannya di banyak proses - masing-masing mendapatkan salinannya sendiri saat startup.
Meekohi
12
Sebagai kepala-up sepertinya NeDB mungkin telah ditinggalkan.
Guy
3
Saya tidak mengerti mengapa komit terbaru 1,5 tahun yang lalu berarti proyek ini ditinggalkan. Sama sekali tidak, itu hanya mencapai tujuannya dan saya tidak melihat nilai apa pun di feature-creep ...
Louis Chatriot
7
Pertimbangkan memiliki skrip sederhana yang memperbarui README setiap 3 bulan, menggantikan baris terakhir yang mengatakan "Proyek ini masih aktif sebagai <tanggal hari ini> - NeDB (c) 2013- <tahun ini> Louis Chatriot"; pesan commit harus berupa "menyatakan bahwa proyek masih aktif pada <tanggal hari ini>", yang akan menjadi hal pertama yang dilihat orang di bagian atas github.
Giacomo Lacava
6
@LouisChatriot saya harus setuju. Anda memiliki 107 masalah, 32 PR duduk di sana dan perubahan terakhir ke kode adalah 3 tahun yang lalu. Hanya melihat itu, ini adalah perangkat lunak yang saya tidak ingin bawa dan berurusan dengan ketidakcocokan (3 tahun di js dev adalah selamanya), masalah yang diabaikan, dll. Jumlah bintang yang tepat tetapi tidak menjerit segar.
Carles Alcolea
18

NeDB tampaknya menjadi apa yang Anda cari. Dari uraian:

Tertanam database persisten untuk Node.js, ditulis dalam Javascript, tanpa ketergantungan (kecuali modul npm tentu saja). Anda dapat menganggapnya sebagai proyek SQLite untuk Node.js, yang dapat digunakan dengan pernyataan membutuhkan sederhana. API adalah bagian dari MongoDB. Anda dapat menggunakannya sebagai datastore persisten atau hanya dalam memori.

Christof Jans
sumber
@Deilan Saya tidak mengerti mengapa komit terbaru 1,5 tahun yang lalu berarti proyek ini ditinggalkan. Sama sekali tidak, itu baru saja mencapai tujuannya dan saya tidak melihat nilai apa pun di feature-creep ...
Louis Chatriot
@LouisChatriot Saya setuju bahwa secara umum saya salah dengan penilaian sejauh ini. Jadi saya menghapusnya dari komentar awal saya.
Deilan
16

Lokijs : Datastore berorientasi dokumen dalam memori yang cepat untuk node.js, browser, dan cordova.

  • Javascript Datastore dengan Memori Ketekunan
  • Di-Browser NoSQL db dengan sinkronisasi dan bertahan
  • toko Redis-style dan instalasi npm
  • NoSQL db yang tahan lama untuk Cordova
  • Embeddable NoSQL db dengan Persistence for node-webkit

LokiJS menjadi solusi ideal:

  • Aplikasi seluler - terutama berbasis HTML5 (Cordova, Phonegap, dll.)
  • Node.js menyematkan datastore untuk aplikasi kecil hingga menengah
  • Tertanam dalam aplikasi desktop dengan Node Webkit

https://github.com/techfort/LokiJS

Damodaran
sumber
apakah data saya di lokiJS akan dihapus jika saya menghapus penyimpanan lokal saya?
HIRA THAKUR
@LeonardoDaCodinchi - Tergantung pada bagaimana Anda menggunakannya, tetapi di Node menyimpan ke file json untuk kegigihan.
BryanGrezeszak
Database masih tersimpan dalam memori saat startup. Dari apa yang saya pahami.
mjwrazor
14

Lihatlah http://www.tingodb.com . Saya percaya itu melakukan apa yang Anda cari. Selain itu sepenuhnya kompatibel dengan API MongoDB. Ini mengurangi risiko implementasi dan memberi Anda opsi untuk beralih ke solusi berat saat aplikasi Anda tumbuh.

https://github.com/sergeyksv/tingodb

Sergey Korotkov
sumber
1
Kompatibilitas penuh dengan MongoDB adalah fitur yang sangat bagus - kembangkan aplikasi Anda untuk bekerja dengan db lokal kecil, maka jika perlu, tingkatkan ke MongoDB .... Terima kasih!
Taman Brad
... tapi jelas jangan lupa untuk membandingkan dengan nedb , yang juga kompatibel dengan MongoDB, dan lihat mana yang cocok untuk Anda
Brad Parks
Komit terbaru pada 26 Desember 2016.
Deilan
9

Coba nStore, sepertinya kunci / nilai db tertanam ringan yang bagus untuk simpul. Lihat https://github.com/creationix/nstore

Guy Korland
sumber
1
Komit terbaru pada 2 April 2013.
Deilan
8

Saya mengalami masalah dengan SQLite3, nStore dan Alfred.

Yang berfungsi untuk saya adalah node-dirty :

path = "#{__dirname}/data/messages.json"
messages = db path

message = 'text': 'Lorem ipsum dolor sit...'

messages.on "load", ->    
    messages.set 'my-unique-key', message, ->
        console.log messages.get('my-unique-key').text

    messages.forEach (key, value) ->
        console.log "Found key: #{key}, val: %j", value

messages.on "drain", ->
    console.log "Saved to #{path}"
Radek
sumber
Terima kasih atas bagiannya, saya sudah mencari sesuatu seperti ini untuk sementara waktu. Ini dalam kombinasi dengan situs web kecil bekerja dengan baik!
Dieterg
1
@DieterGoetelen, Anda dipersilakan! Saya juga baru-baru ini cukup senang menggunakan EJDB yang lebih kuat yang memiliki sintaks seperti MongoDB dan memiliki binding di Node.js dan di luar github.com/Softmotions/ejdb-node
Radek
5

Mungkin Anda harus mencoba LocallyDB itu mudah digunakan dan ringan selain dengan sistem pemilihan canggih mirip dengan ekspresi kondisional javascript ...

https://github.com/btwael/locallydb

Wael Boutglay
sumber
Terima kasih Wael Amine Boutglay LocallyDB hanya melakukan hal saya untuk simpul js. Sebelumnya saya bekerja dengan php dan saya membuat database file flat saya sendiri github.com/sguha-work/LifeDB
Angshu Guha
LocallyDB bagus untuk pengujian lokal ! Harap dicatat bahwa itu menggunakan blok IO. Jangan tidak menggunakannya dalam produksi.
Junle Li
1
Tautan tidak berfungsi. Ini adalah halaman parkir domain.
rsp
Tautan @rsp diperbaiki, periksa http://boutglay.com/locallydb/
Wael Boutglay
Komit terbaru pada 1 Agustus 2016.
Deilan
1

Saya menulis jaguarDb untuk menangani beberapa hal yang Anda sebutkan karena saya kadang-kadang membutuhkan database "kecil" untuk demo atau proyek pengujian juga dan saya tidak ingin bergantung pada mongoDB atau database nyata lainnya.

https://github.com/hectorcorrea/jaguarDb

Hector Correa
sumber
2
Komit terbaru pada 3 April 2013.
Deilan