2017-02-09 12 views
0

私はそこにデータを含むデータベースを作成しています。そのデータベースには2つの顧客があります。1)ユーザーにデータを何らかの形で見せる.NET Webサーバー。 2)データを作成してテーブルを作成するpython dataminer。言語間のORMの共有

私はいくつかの選択肢があります。 .NET Entity Frameworkを使用してデータベースを作成し、それをPython側でリバースエンジニアリングすることができます。私はその逆にすることができます。 1つまたは他のシステム、またはその両方に未加工のSQL文を書くことができます。このようなやり方をすることの落とし穴は何ですか?私は、たとえば、テーブルを作成するためにPythonのORMを使用すると、.NETのスペースに苦労するつもりだと心配しています。

+0

'python'の場合、[' SQLAlchemy automap'](http://docs.sqlalchemy.org/en/latest/orm/extensions/automap.html)と['django inspectdb']( https://docs.djangoproject.com/en/1.10/howto/legacy-databases/)。どちらにもいくつかの制限があります。 – danielx

+0

私はこれが事実であることは承知していますが、私の経験上、そのような機能は「一度実行してから、将来コードを使用する」ように設計されています。ある言語で "コードファースト"しかできないので、私は毎日自動でSQLAlchemyになります。誰がこれをより簡単にするか、automapかinspectdbにするか? – Scott

+0

私は分かりませんが、SQLAlchemyのautomapは、要求に応じて反映されているため、より一時的ではないようです。この問題に対するもう1つのアプローチは、データサーバがウェブサーバによって提供されるAPIを介してDBに読み書きすることです。次に、データ・ベースは、基礎となるデータベース・レイヤーに関する懸念から切り離されます。ちょうど私の2セント。 – danielx

答えて

0

私はそのような質問が大好きです。 ここでは考慮すべきことがあります。あなたのウェブサイトは高速でなければならず、ほとんどのウェブサイトのボトルネックはデータベースです。あなたの質問に対する答えは、.NETがSQLで簡単に動作できるようにすることです。 Pythonでは、テーブルの名前や多分行名を指定するなどの作業はほとんど必要ありません。私はDjangoとSQLAlchemyの両方が良いと思います。

もう1つの解決策は、データを収集するデータベースとデータを表示するデータベースとの間にブリッジを設けることです。バックグラウンドでは、収集したデータをメインデータベースに移行するためのタスク/ジョブを作成することができます。これもオプションであり、作業を楽にします。少なくとも、データベース固有のコードと奇妙なコードは、すべて第3のコンポーネントに移動します。

私はPythonに切り替える前にかなり長い間.NETで作業していましたが、あなたが選んだ戦略は言語とORMの両方でデータを扱うことができるということを知っておく必要があります。あなたの知っている言語で仕事の最も難しい部分を行います。あなたがPython開発者であれば、Pythonを選択してテーブルと行の正しい名前を混乱させます。

関連する問題