2016-03-21 7 views
2

私はアプリケーションを帆からFOXXに移動しようとしています。私はFOXXでnode.jsモジュールを使うことができると予想していましたが、問題が発生しました。私は、SCMリポジトリへの操作を実行するためにサーバー上に "作業中の"ディレクトリを作成する必要があります。 "remove"と "mkdirp"モジュールをインストールしました。 mkdirpモジュールはfs.lstatSyncを呼び出し、FOXXで不足していると報告されます。 fsのローカルノードコピーをインストールしても問題は解決しません。ArangoDB FOXXノード拡張

これが問題の場合は、外部コマンドラインプログラムを作成するなどの他のタスクの一部を実行できないことがあります。この場合、私はすべてのタスクをFOXXに移すことを再考する必要があるかもしれませんが、それは展開の悪夢となる可能性のあるセイルとFOXXの両方で多くの機能を複製することを意味します。

答えて

2

Foxxは非常に柔軟性がありますが、ArangoDBのJavaScript環境では「ちょうど」動作しています。この環境は、特に非同期コードやファイルシステム、ネットワークI/Oに関しては、Node(したがってNPMの一部のモジュール)と完全には互換性がありません。

特に、fsモジュールは、ノードに組み込まれたfsモジュールとは異なります。幸いにもremovemkdirpモジュールが提供する2つの機能がすでに内蔵されてArangoDBのfsモジュールに

  • fs.makeDirectoryRecursivemkdirp
  • fs.removeDirectoryRecursiveと同等ですがremove

それは同等ですArangoDB内から外部プロセスを起動することは可能ですが、関連する機能は内部APIおよびFoxxサービスで使用するためのものではありません(他の制限の中で、現在は出力を得る方法がなく、終了ステータスのみです)。

達成したいこととパフォーマンス要件がどのように見えるかによって、I/O重いコードを外部ノードのマイクロサービスに分けることが実際には良い考えです。 Foxxは基本データベースのアプリケーションロジックラッパーとして最も適しており、すべてのFoxxコードは他のArangoDB JavaScriptコードと並行して実行されるため、ArangoDBがJavaScriptレイヤーに触れる必要のある他の要求を処理する能力に長期間の要求が影響する可能性があります。

SCM関連のロジックを処理し、必要に応じて(または2つのサービス間でも)セイルからの通信を行う小さなスタンドアロンのノードサービスを作成することをお勧めします。これは、最初に追加されたオーバーヘッドを最初に意味しますが、非データベース関連のタスクでは、ArangoDBでCPUサイクルを費やすよりはるかにスケーラビリティが高くなります。

+0

これは多くの意味があります。ありがとうございました。 – ggendel