3

OracleNoSQLデータベースへのPythonアダプタを提案しています。Oracle NoSQLデータベースはスタンドアロンのJavaアプリケーションとして実行され、少なくともJavaプログラムでは、接続するホスト名とポート、およびいくつかの構成設定をプログラムに通知することで、データベースとのインターフェースを取ります。次に、その構成を含む「kvstore」オブジェクトからJava呼び出しを行います。

Oracle NoSQLが持つJavaメソッドのPythonバージョンを基本的に公開し、実行中のOracle NoSQLアプリケーションと通信するためにそれらをJavaに変換するPythonライブラリを作成したいのですが、どのテクノロジーが最適かわかりません。それをするために。

誰かが私が使用したいテクノロジーを知っていますか?Jython(アプリケーションを標準のPython環境で実行できるようにするため)またはJNI(いくつかの厄介な警告があるように思われるため)を使用したくありません。

編集:私がこれまでに見つけた唯一の潜在的な技術は次のとおりです:Jpype それは私のために働くでしょうか?

また、ライブラリに必要な理想的な要件は次のとおりです。JythonまたはJNIのいずれかが実際にこれらの要件に最もよく一致する場合は、それらの使用を検討します。

  1. パフォーマンス。Oracle NoSQLの主な利点はパフォーマンスとスケーラビリティであるため、これがアダプタにとって最も重要なコンポーネントになります。

  2. Pythonユーザー向けに簡単に実装できます。ライブラリをPythonプログラマーが実際に使用するには、自然な方法でライブラリを比較的簡単に使用できる必要があります。

  3. 信頼性。Pythonが自然に動作すると予想されるプラットフォームで動作している間、それが信頼でき、バグがないことが可能である必要があります。(これが私がJNIについて心配した理由です。JNIはその実装がプラットフォームに依存しているようで、エラーが発生しやすい可能性があります。)

  4. 開発スピード。重要な最後のポイントは、開発が比較的速いということです。開発者のチームはPythonまたはCの学習を楽しんでいますが、現在、Javaは他のどのプログラミング言語よりもよく知っています。

4

1 に答える 1

3

それぞれのポイントに関連するメモを付けて、順番に答えようとしました。

  1. パフォーマンス: 私の意見では、ここでは JNI が勝者になるでしょう。

  2. 実装が簡単:ライブラリを簡単に使用できるという意味でこれを取っていますか?それは、API、1 対 1 のメソッド呼び出し、オブジェクト ハンドルなどの構築方法に完全に依存します。

  3. 信頼性: ここでは Jython が明らかに勝者です。なぜなら、単に POJO をインスタンス化する/クライアント コードで API に直接アクセスするだけの場合、エラーの余地がないからです。

  4. 開発速度: JNI は非常に退屈な場合があります。基本的に、CPython モジュール、C、Python 拡張機能、JNI を学習してから、Java で構築された既存の API を参照しています。

全体として、ジャンプすることができれば、主に API を直接操作できるため、短期的に Jython を組み込むことでより多くのメリットが得られると思います。私は個人的に IronPython を .NET コードベースに組み込みましたが、うまくいきました。はい、ネイティブの速度は失われますが、動作する JNI ブリッジに必要な C コーディングの量を考慮すると、トレードオフを正当化するのは困難です。とはいえ、リストに挙げたプロジェクト (Jpype) のようなプロジェクトが見つかるかもしれません。

Jython に移行すると、必要なネイティブ CPython ランタイムのどの機能が失われるのかを尋ねたいと思います。CPython の既存のコードベースは、CPython のネイティブ機能に大きく依存していますか?

とにかく、答えに私の試みがあります。

于 2013-02-26T22:47:24.797 に答える