12

私たちは、Web ベースとElectronによるクロスプラットフォーム デスクトップ ソリューションの両方として提供されるアプリケーションに取り組んでいます。

顧客の要件により、デスクトップ クライアントは「クラウド」を利用してデータを保存することができません。すべてのデータをローカル マシンに保存するか、さらに良いことに、同じローカル ネットワーク上の別のユーザーが同じデータ ファイルを使用できるように、データベース/データ ファイルを外部 HDD に保持するオプションをユーザーに提供する必要があります。

NeDBPouchDBなどを調べてきましたが、これらはすべてブラウザ自体で Web SQL または IndexedDB を使用してデータを保存します。NeDB は理論的にはファイル システムを使用できますが、それは Node Webkit アプリでのみ可能のようです。

別のオプションはもちろんMongoDBですが、Web サーバー上にサイトをセットアップする必要があります。ユーザーが自分のマシンでそれをどのようにセットアップするかを見ると、それは 1 人のユーザーに対してのみ機能しますが、データを共有することは非常に困難になります (注: 技術的なノウハウがほとんどないユーザーを想定してください)。

  • ブラウザ内データベースではなくファイルにデータを保持するように NeDB を強制する方法はありますか?
  • あるいは、電子/ノードでうまく機能するファイルベースのコンパクトなデータベースを知っている人はいますか?

できれば NoSQL データベースを使用したいと考えていますが、ファイルベースの SQL データベースのオプションも検討されます。

4

1 に答える 1

7

私は Electron アプリで NeDB を使用した経験があり、ファイルシステムで確実に動作すると言えます。

どのように NeDB を初期化していますか (またはデータベースの選択は何であれ)? また、メインプロセスまたはレンダラープロセスで初期化していますか? それを共有していただければ、問題を構成の問題に突き止めることができると思います。

これは、ディスクに保存する永続的なデータ ストアを使用して NeDB を開始する方法です。

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

MongoDB は、Electron アプリにとってはやり過ぎになると思います (これは、クラウドで実行される高性能の分散データベースであることを意図しています)。

検討できるもう 1 つのオプションは、ノード コミュニティで人気のあるLevelDB (ファイルシステムに永続化できるキー/値ストア) です。(編集 4/17/17 IndexedDB はフードの下で LevelDB を使用するため、そのルートに行く場合は、それを使用することもできます)

私が間違いなく慎重に評価する側面の 1 つは、このデータベースをパッケージ化して配布するのはどれほど難しいかということです。ビルド システムに統合するにはどうすればよいですか? Level と NeDB は 経由で簡単に含めることができnpm install、ネイティブ コードのコンパイルは node-gyp でシームレスに処理されます。ただし、たとえば、Mongo をバンドルするには、異なるプラットフォームごとに動作するビルドを取得するための作業が必要になります。

于 2016-06-07T02:50:31.687 に答える