6

Azure Storage(テーブル、キュー、BLOB)とAWSストレージ(EBS、SimpleDB、S3)の両方をサポートする必要がある.Net ORMを設計して実装しています。 。主な設計目標はシンプルさです。Azure/AWS ORMデザインガイドライン

一部の作業はhttp://www.cs.virginia.edu/~humphrey/papers/CSAL.pdfで行われていますが、私の意見では、Azure/AWS Storageインターフェイスと密接に結びついていて、新しい機能が追加されたり、古い機能が変更された場合は破損する可能性があります。例えば、私はテーブルを作成/削除することはできませんが、最も効率的な方法である種のオブジェクトを保存するだけで済みます。

私はあなたの経験をガイドラインの形で(DO、CONSIDER、AVOID、DO NOT)の形で共有するようお願いします。 AzureとAWSの最も可能性の高い進化の経路を考え続ける可能性が高い、抽象度の高い正確なレベルでORMを設計し、仕上げるという一般原則から始めて、私は本当に感謝しています。

+1

"AzureとAWSの最も可能性の高い進化経路を考え続ける可能性が高い" - どのように誰もがそれを知ることができますか? – millimoose

+0

これは間違いなく、わかりません。最高の推測で十分です。 – andriys

答えて

1

実際に密結合を避けたいのであれば、両方のタイプのストレージで使用できる最小セットの機能の上に単純に実装して抽象レイヤーを実装することをお勧めします。

しかし、とにかく、あなたがやろうとしていることは本当に私にとっては意味がありません。クラウド(非リレーショナル)ストレージは非常に独特で、一般的なORMを構築しようとすると巨大な失敗に終わります。現代のSQL ORMは、RDBMSに共通の最小セットの機能があり、実際には非常に広大で、ほとんどの場合、異質なものは必要ないため、「良い」ものです。クラウドストレージでは、それぞれの実装はほぼ独特です。なぜなら、最初の側面はスケーラビリティだからです。たとえば、AmazonでAmazonが存在しないため、BlobリースをAzureに捨てると(私は考えていません)、AmazonでBlob並行アクセスを管理するのは難しいでしょう。アズールでも、それは理にかなっていません。

私はむしろ、問題を避けるためにはっきりと設計されていますが、両方のプラットフォームで利用可能なすべての機能を活用するように設計されたデータアクセス層を実装しようとします。

+0

それは本当に私にとって理にかなっています。私はこのAPIを構築して、[雲の上:クラウドコンピューティングのバークレーのビュー](http://www.eecs.berkeley.edu/Pubs/TechRpts)のセクション2で説明されているデータロックインの障害/サージコンピューティングの機会に取り組んでいます/2009/EECS-2009-28.pdf)。だから、私はあなたが正しく提案していることを理解していますか?1.一般的なORMを構築することを忘れてしまいます。 2. AzureとAWSの2つの異なるAPIを実装し、それぞれのフル機能セットを使用しますか? – andriys

+0

はい、それは私が意味するものです。インターフェイスの背後にある高水準の機能を分離し、それぞれが各プラットフォームのすべての利用可能な機能を使用する2つのバージョンを実装します。おそらく2つのストレージタイプをターゲットにできるのであれば、本格的なORMを構築するのは大変です。 –

関連する問題