Lightweight Javascript DB สำหรับใช้ใน Node.js [ปิด]


130

ใคร ๆ ก็รู้ว่าเป็นฐานข้อมูลที่มีน้ำหนักเบา แต่ทนทานเขียนด้วย Javascript ที่สามารถใช้กับ Node.js

ฉันไม่ต้องการ 'น้ำหนัก' ของโซลูชั่นที่ยอดเยี่ยมเช่น Mongo หรือ Couch ง่ายในฐานข้อมูล JS หน่วยความจำที่มีความสามารถในการคงอยู่กับดิสก์เป็นไฟล์จะเพียงพอ ฉันจะใช้เพื่อเก็บข้อมูลจำนวนเล็กน้อยเท่านั้น

ที่ต้องการ:

  • สามารถทำงานในกระบวนการด้วยแอปพลิเคชันเซิร์ฟเวอร์ node.js
  • สามารถบันทึกฐานข้อมูลทั้งหมดลงในดิสก์และกู้คืนหลังจากความล้มเหลว
  • ไม่จำเป็นต้องรองรับการเขียนปรมาณูหรือการทำธุรกรรม
  • คำสั่งที่รวดเร็วและการเรียงลำดับจะดี
  • ต้องการรองรับปริมาณข้อมูลขนาดเล็กเพียงสูงสุด 1MB

ฉันเคยเจอ TAFFY db มาแล้ว แต่ดูเหมือนจะไม่ได้รับการปรับให้เหมาะกับการใช้งานใน Node.js มีใครเห็นสิ่งที่ฉันกำลังมองหาอยู่ใช่ไหม

ขอบคุณ


คำตอบ:


6

ฉันก็แค่คุ้นเคยกับ Mongo และโซฟา แต่ยังมีคนหนึ่งชื่อคงทน


14
คุณจะยังคงพิจารณาโซลูชันนี้หรือไม่? การกระทำครั้งสุดท้ายเมื่อ 7 ปีที่แล้ว
mjwrazor

3
ความมุ่งมั่นล่าสุดเมื่อวันที่ 31 มีนาคม 2010
Deilan

1
ฉันคิดว่าคุณกำลังมองหาPersistenceJS
Chamilyan

1
เป็นวิธีการที่อาจจะดีกว่าใด ๆ @Chamilyan
Zee

103

ฉันมีข้อกำหนดแบบเดียวกันกับคุณ แต่ไม่พบฐานข้อมูลที่เหมาะสม nStore มีแนวโน้มดี แต่ API ยังไม่สมบูรณ์พอและไม่สอดคล้องกันมาก

นั่นเป็นเหตุผลที่ฉันสร้างNeDBซึ่งเป็นฐานข้อมูลแบบฝังตัวที่พึ่งพาน้อยกว่าสำหรับโครงการ Node.js คุณสามารถใช้มันได้อย่างง่ายrequire()มันยังคงอยู่และ API ของมันเป็นชุดย่อยที่ใช้กันมากที่สุดของ MongoDB API ที่รู้จักกันดี

https://github.com/louischatriot/nedb


8
nedb ยอดเยี่ยม แต่โปรดทราบว่าคุณไม่สามารถใช้งานได้ในหลายกระบวนการ - แต่ละอันได้รับสำเนาของตัวเองเมื่อเริ่มต้น
Meekohi

12
ในฐานะที่เป็นหัวหน้าขึ้นดูเหมือนว่า NeDB อาจถูกทอดทิ้ง
Guy

3
ฉันไม่เข้าใจว่าทำไมความมุ่งมั่นล่าสุด 1.5 ปีที่ผ่านมาหมายความว่าโครงการถูกทอดทิ้ง มันไม่ใช่อย่างแน่นอนมันเพิ่งบรรลุเป้าหมายและฉันไม่เห็นคุณค่าใด ๆ ในคุณสมบัติการคืบ ...
Louis Chatriot

7
ลองพิจารณาสคริปต์ง่ายๆที่อัปเดต README ทุก 3 เดือนโดยแทนที่บรรทัดสุดท้ายที่ระบุว่า "โครงการนี้ยังคงใช้งานได้เป็น <วันที่วันนี้> - NeDB (c) 2013- <ปีของวันนี้> Louis Chatriot"; ข้อความคอมมิชชันควรเป็น "การระบุว่าโครงการนั้นยังคงใช้งานอยู่ใน <วันที่ของวันนี้>" ซึ่งจะเป็นสิ่งแรกที่ผู้คนเห็นที่ด้านบนของ GitHub
Giacomo Lacava

6
@LouisChatriot ฉันต้องยอมรับ คุณมีปัญหา 107 รายการมี 32 PRs นั่งอยู่ที่นั่นและการเปลี่ยนแปลงรหัสครั้งล่าสุดคือ 3 ปี เพิ่งเห็นว่ามันเป็นซอฟต์แวร์ที่ฉันไม่ต้องการนำเข้ามาและจัดการกับความไม่ลงรอยกัน (3 ปีใน js dev เป็นนิรันดร์) ปัญหาที่ถูกเพิกเฉย ฯลฯ จำนวนที่เหมาะสมของดวงดาว แต่มันก็ไม่กรีดร้องสด
Carles Alcolea

18

NeDBดูเหมือนจะเป็นสิ่งที่คุณกำลังมองหา จากประกาศแจ้ง:

ฝังตัวฐานข้อมูลถาวรสำหรับ Node.js เขียนด้วย Javascript โดยไม่ต้องพึ่งพา (ยกเว้นโมดูล npm แน่นอน) คุณสามารถคิดว่ามันเป็น SQLite สำหรับโครงการ Node.js ซึ่งสามารถใช้กับคำสั่งต้องการง่าย ๆ API เป็นส่วนย่อยของ MongoDB คุณสามารถใช้มันเป็นที่เก็บถาวรหรือเป็นที่เก็บข้อมูลในหน่วยความจำเท่านั้น


@Deilan ฉันไม่เข้าใจว่าทำไมความมุ่งมั่นล่าสุด 1.5 ปีที่ผ่านมาหมายความว่าโครงการถูกทอดทิ้ง มันไม่ใช่อย่างแน่นอนมันเพิ่งบรรลุเป้าหมายและฉันไม่เห็นคุณค่าใด ๆ ในคุณสมบัติการคืบ ...
Louis Chatriot

@LouisChatriot ฉันยอมรับว่าโดยทั่วไปแล้วฉันผิดกับการตัดสินใด ๆ ดังนั้นฉันจึงลบมันออกจากความคิดเห็นเริ่มต้นของฉัน
Deilan

16

Lokijs : ที่เก็บข้อมูลเอกสารที่รวดเร็วและมุ่งเน้นในหน่วยความจำสำหรับ node.js, เบราว์เซอร์และคอร์โดวา

  • Javascript Datastore ในหน่วยความจำคงอยู่
  • ในเบราว์เซอร์ NoSQL db พร้อมการซิงค์และการคงอยู่
  • เก็บสไตล์ Redis และติดตั้ง npm
  • คง NoSQL db สำหรับ Cordova
  • Embedable NoSQL db พร้อม Persistence สำหรับ node-webkit

LokiJS เป็นโซลูชั่นที่สมบูรณ์แบบ:

  • แอปพลิเคชันมือถือ - โดยเฉพาะอย่างยิ่ง HTML5 (Cordova, Phonegap ฯลฯ )
  • Node.js datastore แบบฝังสำหรับแอปขนาดเล็กถึงขนาดกลาง
  • ติดตั้งในแอปพลิเคชันเดสก์ท็อปด้วย Node Webkit

https://github.com/techfort/LokiJS


ข้อมูลของฉันใน lokiJS จะถูกล้างข้อมูลหรือไม่ถ้าฉันล้างข้อมูลในพื้นที่ของฉัน
HIRA THAKUR

@LeonardoDaCodinchi - ขึ้นอยู่กับวิธีการใช้งานของคุณ แต่ใน Node จะบันทึกเป็นไฟล์ json เพื่อคงอยู่
BryanGrezeszak

ฐานข้อมูลจะถูกเก็บไว้ในหน่วยความจำเมื่อเริ่มต้น จากสิ่งที่ฉันได้มาทำความเข้าใจ
mjwrazor

14

ลองดูที่http://www.tingodb.com ฉันเชื่อว่ามันเป็นสิ่งที่คุณมองหา นอกจากนี้มันเข้ากันได้อย่างสมบูรณ์กับ MongoDB API สิ่งนี้จะช่วยลดความเสี่ยงในการติดตั้งและให้ทางเลือกแก่คุณในการเปลี่ยนไปใช้โซลูชันขนาดใหญ่เมื่อแอปของคุณเติบโต

https://github.com/sergeyksv/tingodb


1
การใช้งานร่วมกันได้อย่างสมบูรณ์กับ MongoDB เป็นคุณสมบัติที่ดีมาก - พัฒนาแอปของคุณให้ทำงานกับฐานข้อมูลท้องถิ่นขนาดเล็กจากนั้นถ้าคุณต้องการปรับขนาดเป็น MongoDB .... ขอบคุณ!
Brad Parks

... แต่อย่าลืมเปรียบเทียบกับnedbซึ่งสามารถใช้กับ MongoDB ได้และดูว่าเหมาะกับคุณมากเพียงใด
Brad Parks

ความมุ่งมั่นล่าสุดเมื่อวันที่ 26 ธันวาคม 2016
Deilan


8

ฉันมีปัญหากับ SQLite3, nStore และ Alfred

สิ่งที่ได้ผลสำหรับฉันคือโหนดที่สกปรก :

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}"

ขอบคุณสำหรับการแบ่งปันฉันได้รับการมองหาบางอย่างเช่นนี้มาระยะหนึ่งแล้ว เมื่อรวมกับเว็บไซต์ขนาดเล็กก็ใช้งานได้ดี!
Dieterg

1
@DieterGoetelen ยินดีต้อนรับคุณ! ฉันยังมีความสุขเมื่อเร็ว ๆ นี้ด้วยการใช้ EJDB ที่มีประสิทธิภาพมากขึ้นซึ่งมีไวยากรณ์เหมือน MongoDB และมีการผูกใน Node.js และเกินกว่าgithub.com/Softmotions/ejdb-node
Radek


5

บางทีคุณควรลองใช้LocallyDBมันใช้งานง่ายและมีน้ำหนักเบานอกเหนือจากระบบการเลือกขั้นสูงที่คล้ายกับนิพจน์เงื่อนไขแบบจาวาสคริปต์ ...

https://github.com/btwael/locallydb


ขอบคุณ Wael Amine Boutglay LocallyDB เพิ่งทำสิ่งของฉันสำหรับโหนด js ก่อนหน้านี้ฉันทำงานกับ PHP และฉันสร้างฐานข้อมูลไฟล์แฟลตของฉันเองgithub.com/sguha-work/LifeDB
Angshu Guha

LocallyDB เหมาะสำหรับการทดสอบในท้องถิ่น ! โปรดทราบว่ามันใช้ block IO ไม่ได้ใช้ในการผลิต
Junle Li

1
ลิงก์ไม่ทำงาน มันเป็นหน้าที่จอดรถโดเมน
rsp

ลิงก์ @rsp คงที่แล้วให้ตรวจสอบhttp://boutglay.com/locallydb/
Wael Boutglay

ความมุ่งมั่นล่าสุดเมื่อวันที่ 1 สิงหาคม 2016
Deilan


1

ฉันเขียน jaguarDb เพื่อจัดการบางสิ่งที่คุณพูดถึงเพราะบางครั้งฉันต้องการฐานข้อมูล "น้อย" สำหรับการสาธิตหรือทดสอบโครงการด้วยและฉันไม่ต้องการพึ่ง mongoDB หรือฐานข้อมูลจริงอื่น

https://github.com/hectorcorrea/jaguarDb


2
ความมุ่งมั่นล่าสุดเมื่อ 3 เมษายน 2013
Deilan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.