2012-05-11 52 views
8

Có một phụ trợ giả cho CouchDB, tức là cùng một giao diện REST và ngữ nghĩa nhưng hoàn toàn trong bộ nhớ? Chúng tôi có một bài kiểm tra chạy mỗi bài kiểm tra trên một cơ sở dữ liệu nguyên sơ mỗi lần (để được tái sản xuất), nhưng chạy với cơ sở dữ liệu thực có thể nhanh hơn.Triển khai CouchDB trong bộ nhớ

Trả lời

6

Bạn có nghĩa là chạy trên cơ sở dữ liệu giả?

Tôi không nghĩ có điều gì đó nằm ngoài hộp. Hai ý tưởng:

  1. CouchDB trên hệ thống tệp bộ nhớ. Thiết lập ổ đĩa ramdisk hoặc tmpfs và định cấu hình CouchDB database_dirview_index_dir để trỏ đến đó.
  2. PouchDB đang chuyển CouchDB sang tiêu chuẩn IndexedDB của trình duyệt. Bạn không nói ngôn ngữ và môi trường nào bạn đang sử dụng, nhưng nếu bạn có thể chạy Node.js, điều này có thể đáng xem xét. PouchDB có động lượng tốt và tôi nghĩ rằng nó sẽ sớm chạy trong Node.js (có lẽ thông qua jsdom hoặc một số thư viện khác. Lưu ý, điều này không giúp bạn có được giải pháp đầy đủ, nhưng bạn đã mở rộng câu hỏi của mình thành "IndexedDB trong bộ nhớ triển khai cho Node.js "mà câu trả lời là" có "hoặc" sớm ", với quỹ đạo con nuôi của nó.
+1

Tôi tránh sử dụng từ "giả", bởi vì những gì tôi thực sự muốn là chạy với cơ sở dữ liệu thực, chỉ với một phụ trợ nhanh hơn (không nhất thiết phải liên tục). Mocks không bao giờ tương thích 100%, và mocks chính xác là tốn kém để duy trì. –

+0

Phải.Bạn cần một "mô hình" trung thành với điều thực sự, đó là điều thực sự. Đó là thử nghiệm tốt. Thật không may tôi không có bất kỳ ý tưởng tốt hơn so với hai nửa câu trả lời tôi liệt kê (mà không thêm đến một toàn bộ). – JasonSmith

0

Tôi có cùng một vấn đề ... đối với các bài kiểm tra tôi chỉ không muốn thiết lập couchdb ... tôi chỉ muốn có một số nội dung bộ nhớ, càng dễ dàng càng tốt

Tôi đã làm gì: * Tôi tạo bộ nhớ CouchDB Connector => nó chỉ là một triển khai rất đơn giản của "org.ektorp.CouchDbConnector " * Bởi mùa xuân tôi dây CouchDbCo nnection-Thực hiện mà tôi cần => khi tôi sử dụng nó cho thử nghiệm dev của tôi, tôi kết nối với CouchDB Connector của bộ nhớ, nếu tôi muốn kết nối với một CouchDb thực, tôi sử dụng connector => org.ektorp.impl.StdCouchDbConnector

Vấn đề duy nhất là, "org.ektorp.CouchDbConnector" có hơn 50 phương pháp, mà phải được thực hiện. Đối với các vấn đề của tôi nó đã đủ để thực hiện chỉ là một vài trong số các phương pháp này. Phụ thuộc vào testcases của bạn.

2

Tìm thấy điều này: https://github.com/RipcordSoftware/AvanceDB - nó hỗ trợ các nền tảng khác nhau và có vẻ là một nỗ lực nghiêm túc.

+0

điều này thực sự, thực sự hữu ích! chúng ta hãy hy vọng nó sẽ nhận được nhiều động lực hơn. –

2

Khá muộn với bữa tiệc, nhưng tôi đã thành công lớn bằng cách sử dụng pouchdb-server, dựa trên dự án PouchDB nói trên (một triển khai JavaScript của CouchDB). Nó có thể chạy với nhiều loại back-end, bao gồm back-end trong bộ nhớ. Điều đó có nghĩa là bạn có thể chạy

pouchdb-server --in-memory 

để nhận máy chủ tương thích CouchDB trong bộ nhớ. Có một số tùy chọn dòng lệnh khác để khám phá.

Tôi nghĩ rằng nó có thể chạy toàn bộ bộ kiểm tra CouchDB, vì vậy tôi đoán nó là khá khó bạn muốn chạy vào quá nhiều sự khác biệt thực hiện.

-1

memorydb là một phần (trong tiến trình) trong bộ nhớ thực hiện CouchDB được sử dụng với Kivik, có thể được chạy như một máy chủ độc lập.

Chưa phải tất cả chức năng đều được triển khai.

Các vấn đề liên quan