Javascript DB nhẹ để sử dụng trong Node.js [đã đóng]


130

Bất cứ ai cũng biết về một cơ sở dữ liệu nhẹ nhưng bền, được viết bằng Javascript, có thể được sử dụng với Node.js.

Tôi không muốn "trọng lượng" của các giải pháp (tuyệt vời) như Mongo hoặc Couch. Một cơ sở dữ liệu JS trong bộ nhớ đơn giản với khả năng lưu vào đĩa dưới dạng tệp là đủ. Tôi sẽ chỉ sử dụng nó để lưu trữ một lượng nhỏ dữ liệu.

Yêu cầu:

  • có thể chạy trong tiến trình với ứng dụng máy chủ node.js
  • có thể lưu toàn bộ cơ sở dữ liệu vào đĩa và phục hồi sau khi thất bại
  • KHÔNG cần viết nguyên tử hoặc hỗ trợ giao dịch
  • truy vấn nhanh và sắp xếp sẽ tốt
  • chỉ cần hỗ trợ khối lượng dữ liệu nhỏ, tổng cộng tối đa 1MB

Tôi đã bắt gặp db TAFFY cho đến nay nhưng nó thực sự không được tối ưu hóa để sử dụng trong Node.js. Bất cứ ai cũng thấy những gì tôi đang tìm kiếm ngoài kia?

Cảm ơn


Hãy thử sử dụng github.com/rvagg/node-levelup
hellboy

Câu trả lời:


6

Tôi chỉ quen thuộc với Mongo và Couch, nhưng cũng có một cái tên là Kiên trì .


14
Bạn vẫn sẽ coi đây là một giải pháp? cam kết cuối cùng là 7 năm trước.
mjwrazor

3
Cam

1
Tôi nghĩ rằng bạn đang tìm kiếm PersistenceJS
Ch Familyan

1
Làm thế nào mà có thể tốt hơn @Ch Familyan
Zee

103

Tôi có cùng yêu cầu với bạn nhưng không thể tìm thấy một cơ sở dữ liệu phù hợp. nStore đầy hứa hẹn nhưng API chưa đủ hoàn chỉnh và không mạch lạc.

Đó là lý do tại sao tôi tạo NeDB , một cơ sở dữ liệu nhúng ít phụ thuộc cho các dự án Node.js. Bạn có thể sử dụng nó một cách đơn giản require(), bền bỉ và API của nó là tập hợp con được sử dụng phổ biến nhất của API MongoDB rất nổi tiếng.

https://github.com/louischatriot/nedb


8
nedb là tuyệt vời, nhưng lưu ý rằng bạn không thể sử dụng nó qua nhiều quy trình - mỗi quy trình đều có bản sao riêng khi khởi động.
Meekohi

12
Là một người đứng đầu, có vẻ như NeDB có thể đã bị bỏ rơi.
Guy

3
Tôi không hiểu tại sao cam kết mới nhất 1,5 năm trước có nghĩa là dự án bị bỏ hoang. Hoàn toàn không, nó chỉ đạt được mục tiêu của nó và tôi không thấy bất kỳ giá trị nào trong tính năng leo trèo ...
Louis Chatriot

7
Cân nhắc việc có một tập lệnh đơn giản cập nhật README 3 tháng một lần, thay thế dòng cuối cùng có nội dung "Dự án này vẫn hoạt động như <ngày hôm nay> - NeDB (c) 2013- <năm nay> Louis Chatriot"; thông điệp cam kết phải là một cái gì đó như "nói rằng dự án vẫn còn hoạt động kể từ <ngày hôm nay>", đây sẽ là điều đầu tiên mọi người nhìn thấy ở đầu github.
Giacomo Lacava

6
@LouisChatriot Tôi phải đồng ý. Bạn có 107 vấn đề, 32 PR ngồi đó và lần thay đổi mã cuối cùng là 3 năm trước. Chỉ cần nhìn thấy, đó là phần mềm tôi không muốn đưa vào và xử lý sự không tương thích (3 năm trong js dev là vĩnh cửu), các vấn đề bị bỏ qua, v.v ... Số lượng sao đúng nhưng nó không hét lên.
Carles Alcolea

18

NeDB dường như là những gì bạn đang tìm kiếm. Từ khu phố cổ:

Cơ sở dữ liệu liên tục được nhúng cho Node.js, được viết bằng Javascript, không có phụ thuộc (ngoại trừ các mô-đun npm). Bạn có thể nghĩ về nó như một SQLite cho các dự án Node.js, có thể được sử dụng với một câu lệnh yêu cầu đơn giản. API là một tập hợp con của MongoDB. Bạn có thể sử dụng nó như một kho dữ liệu liên tục hoặc chỉ trong bộ nhớ.


@Deilan Tôi không hiểu tại sao cam kết mới nhất 1,5 năm trước có nghĩa là dự án bị bỏ hoang. Hoàn toàn không, nó chỉ đạt được mục tiêu của nó và tôi không thấy bất kỳ giá trị nào trong tính năng leo trèo ...
Louis Chatriot

@LouisChatriot Tôi đồng ý rằng nói chung tôi sai với bất kỳ phán xét nào cho đến nay. Vì vậy, tôi loại bỏ nó khỏi ý kiến ​​ban đầu của tôi.
Deilan

16

Lokijs : Kho dữ liệu hướng đến tài liệu nhanh trong bộ nhớ cho node.js, trình duyệt và cordova.

  • Kho dữ liệu Javascript trong bộ nhớ wih Persistence
  • Trong trình duyệt NoQuery db có đồng bộ hóa và tồn tại lâu
  • một cửa hàng kiểu Redis cài đặt npm
  • Không có db db bền vững cho Cordova
  • Có thể nhúng NoQuery db với tính bền vững cho nút-webkit

LokiJS là giải pháp lý tưởng:

  • Các ứng dụng di động - đặc biệt là dựa trên HTML5 (Cordova, Phonegap, v.v.)
  • Kho dữ liệu nhúng Node.js cho các ứng dụng vừa và nhỏ
  • Được nhúng trong ứng dụng máy tính để bàn với Node Webkit

https://github.com/Techfort/LokiJS


dữ liệu của tôi trong lokiJS có bị xóa nếu tôi xóa lưu trữ cục bộ không?
HIRA THAKUR

@LeonardoDaCodinchi - Phụ thuộc vào cách bạn sử dụng nó, nhưng trong Node, nó lưu vào một tệp json để duy trì.
BryanGrezeszak

Cơ sở dữ liệu vẫn được lưu trữ trong bộ nhớ khi khởi động. Từ những gì tôi đã hiểu.
mjwrazor

14

Hãy xem http://www.tingodb.com . Tôi tin rằng nó làm những gì bạn đang tìm kiếm. Ngoài ra, nó hoàn toàn tương thích với API MongoDB. Điều này làm giảm rủi ro triển khai và cung cấp cho bạn tùy chọn để chuyển sang giải pháp nặng khi ứng dụng của bạn phát triển.

https://github.com/sergeyksv/tingodb


1
Khả năng tương thích đầy đủ với MongoDB là một tính năng rất hay - phát triển ứng dụng của bạn để hoạt động với db cục bộ nhỏ, sau đó nếu bạn cần, hãy mở rộng quy mô lên MongoDB .... Cảm ơn!
Brad park

... nhưng chắc chắn đừng quên so sánh với nedb , cũng tương thích với MongoDB và xem cái nào phù hợp với bạn
Brad

Cam


8

Tôi gặp rắc rối với SQLite3, nStore và Alfred.

Những gì làm việc cho tôi là nút bẩn :

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

Cảm ơn bạn đã chia sẻ, tôi đã tìm kiếm một cái gì đó như thế này trong một thời gian. Điều này kết hợp với các trang web nhỏ hoạt động tốt!
Dieterg

1
@DieterGoetelen bạn được chào đón! Gần đây tôi cũng khá hài lòng khi sử dụng EJDB mạnh hơn, có cú pháp giống MongoDB và có các ràng buộc trong Node.js và ngoài github.com/Softmensions/ejdb-node
Radek


5

Có lẽ bạn nên dùng thử LocallyDB, nó dễ sử dụng và gọn nhẹ cùng với hệ thống chọn nâng cao tương tự như biểu thức điều kiện javascript ...

https://github.com/btwael/locallydb


Cảm ơn Wael Amine Boutglay LocallyDB đã làm điều của tôi cho nút js. Trước đây tôi đã làm việc với php và tôi đã tạo cơ sở dữ liệu tệp phẳng của riêng mình github.com/sguha-work/LifeDB
Angshu Guha

LocallyDB là tốt để thử nghiệm cục bộ ! Xin lưu ý rằng nó sử dụng khối IO. Đừng không sử dụng nó trong sản xuất.
Junle Li

1
Liên kết không hoạt động. Đó là một trang đỗ xe tên miền.
rsp

Đã sửa liên kết @rsp, kiểm tra http://boutglay.com/locallydb/
Wael Boutglay

Cam


1

Tôi đã viết jaguarDb để xử lý một số điều mà bạn đang đề cập vì đôi khi tôi cũng cần một cơ sở dữ liệu "nhỏ" cho các dự án thử nghiệm hoặc thử nghiệm và tôi không muốn phụ thuộc vào mongoDB hoặc cơ sở dữ liệu thực tế khác.

https://github.com/hectorcorrea/jaguarDb


2
Cam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.