2016-06-06 53 views
6

Electron aracılığıyla hem web tabanlı hem de çapraz platform masaüstü çözümü olarak sunulacak bir uygulama üzerinde çalışıyoruz.Bir Electron uygulaması için yerel, dosya tabanlı veritabanı

Müşteri gereksinimleri nedeniyle, masaüstü istemcisi verileri depolamak için "bulut" u kullanamaz; Tüm veriler yerel makinede saklanmalı veya daha da iyisi, kullanıcının harici bir HDD üzerinde veritabanı/veri dosyasını tutma seçeneği olmalıdır, böylece aynı yerel ağdaki başka bir kullanıcı aynı veri dosyasını kullanabilir.

NeDB, PouchDB, vs'ye bakıyorduk, ancak bunların hepsi, verileri depolamak için tarayıcıda Web SQL veya IndexedDB kullanıyor. NeDB teorik olarak dosya sistemini kullanabilir, ancak bu sadece Düğüm Webkit uygulamaları için mümkün görünüyor.

Diğer bir seçenek de elbette MongoDB, ancak bir web sunucusunda bir site kurmak gerektirir. Kullanıcılarımızın bunu kendi makinelerinde nasıl ayarlayacağını görmek, bu sadece bir kullanıcı için çalışacak, ancak verileri paylaşmaları için çok zorlaştıracaktır (not: kullanıcılara az teknik bilgi sahibi olan).

  • NeDB'yi tarayıcıdaki veritabanı yerine bir dosyadaki verileri kalıcı hale getirmeye zorlamanın bir yolu var mı?
  • Alternatif olarak, herhangi bir kişi elektron/düğüm ile iyi çalışan bir dosya tabanlı, kompakt bir veritabanı biliyor mu?

Tercihen bir NoSQL veritabanı kullanmak isteriz, ancak dosya tabanlı SQL veritabanlarının seçenekleri de dikkate alınacaktır.

+0

Bunun "web tabanlı" bölümünü çevreleyen gereksinimlere daha fazla katılabilir misiniz? ccnokes, Electron ile uğraşırken onun cevabı ile doğrudur, fakat sorunuzdan, standart bir Tarayıcıda da çalışacak bir şeye ihtiyacınız olduğu anlaşılıyor. Bu doğru mu? –

cevap

5

Bir Electron uygulamasında NeDB ile bazı deneyimim var ve kesinlikle dosya sistemi üzerinde çalışacağını söyleyebilirim.

NeDB'yi nasıl başlatıyorsunuz (veya veritabanı seçiminiz ne olursa olsun)? Ayrıca, ana veya render işleminde bunu başlatıyor musunuz? Bunu paylaşabiliyorsanız, sorunu bir yapılandırma sorununa kadar izleyebileceğimizi düşünüyorum.

NeDB'yi diske kaydedilen kalıcı bir veri deposuyla başlattığınız budur.

var Datastore = require('nedb') 
    , db = new Datastore({ filename: 'path/to/datafile', autoload: true }); 

Ben MongoDB (gerçekten bulutunda çalışan yüksek performanslı, dağıtık veritabanı olması gerekiyordu) bir Elektron app için overkill olacak düşünüyorum.

Göz önünde bulundurmanız gereken başka bir seçenek, düğüm topluluğunda popüler olan LevelDB (dosya sistemine erişebilen bir anahtar/değer deposu). (EDIT 4/17/17 IndexedDB, kaputun altındaki LevelDB'yi kullanır, bu yüzden o rotaya giderseniz, sadece bunu kullanabilirsiniz)

Kesinlikle dikkatle değerlendirdiğim bir yön: Bu veritabanı ne kadar zor olacak? paket ve dağıtmak? Yapı sistemime nasıl entegre edebilirim? Seviye ve NeDB, npm install aracılığıyla kolayca eklenebilir ve herhangi bir yerel kod derlemesi node-gyp ile sorunsuz şekilde işlenir, bu da aldığı kadar basittir. Bununla birlikte, Mongo'yu paketlemek, örneğin, her farklı platform için bir çalışma yapısına sahip olmak için biraz çalışma gerektirecektir.

+0

Burada bir şey olabileceğini düşünüyorum.Veritabanını bir dosya adı ve 'autoload' ile baştan başa yapıyorum ... Bir şey [Aurelia] (http://aurelia.io) uygulamasını başlatmak için elektron ana işlemlerini kullanmamız ve db'yi Aurelia'dan başlatıyorum Uygulamanın. Electron'da yeniyim, NeDB'yi ana veya daha eski işlemlerden nasıl başlatabilirim? Ve bu db daha sonra uygulamanın geri kalanında kullanılabilir hale nasıl olabilir? –

+1

@SergiPapaseit, bir dosya sistemi desteğiyle ana veya oluşturucudan başlatılıyor sanırım aynı olacak. Uygulamanın geri kalanı için kullanılabilir hale getirmek için .... sadece bir modülden ihraç. Ana cihazdan başlatıldıysa ve bir oluşturucudan erişmeniz gerekiyorsa, Elektronların IPC'sini veya uzak API'yi kullanabilirsiniz. – ccnokes