-3

私がプログラムを書いていると仮定しましょう。私のプログラムには独自のエンティティなどがあります。また、私は OOP .Net 言語 (C# ですが、F# または Iron Python の場合もあります) を使用しているため、オブジェクトには、継承、他のオブジェクトへの参照、階層関係などの奇妙な OOP 特性があります。

当然のことながら、これらすべてをデータベースに保存したいのですが、それはリレーショナルであるため、明らかにできません。また、集合論について学ぶのに多くの時間を費やした数学者から来ました。

ORM レイヤーを使用できるようになりましたが、あらゆる種類の XML などを記述する必要があるため、それは少し悪夢のようです。

いいえ、私が欲しいのは、オブジェクト指向機能を備えたデータベースです! おそらく、オブジェクト リレーショナル データベースでさえも!

しかし!また、 .Netの世界に自然な API とバインディングを持たせたいと思っています。

私はクラス Cat を記述できるようになり、データベースに私の Cat を保存するように指示できるようにしたいと考えています。Linqプロバイダーがあれば、それも非常に便利です。

何か案は?

4

3 に答える 3

3

さまざまな種類のオブジェクト データベースが多数存在します。db4operst.netなどの組み込みユースケース向けに最適化された使いやすいものや、 Versant Object DatabaseObjectiviy Database などの大規模なデータベースもあります。そのようなデータベースについては、Google で検索してください。

とにかく、そのようなオブジェクトデータベースを使用すると、オブジェクトを保存してセマンティクスを維持しようとします。そのため、配列、参照、継承などを格納できます。これにより、非常にネイティブな方法でデータを処理できます。ほとんどの場合、LINQ プロバイダーも提供されます。

RavenDBMongoDBなどのドキュメント データベースも参照することをお勧めします。(さらに多くの代替案についてもグーグルで検索してください)。これらには非常に自然なインターフェイスもあり、非常に複雑なオブジェクトグラフを格納できます。ただし、それらは「ドキュメント」指向です。これは、ドキュメントを保存および更新することを意味します。つまり、実際には、一連のオブジェクトを一緒に保存およびオブジェクト化し、それらの更新を一緒に更新することを意味します。

于 2010-08-16T13:17:05.993 に答える
2

Raven DB はあなたが探しているものだと思います。他にもドキュメントの nosql データベースがあります。CouchDB、MongoDB もありますが、これらはネイティブの .NET 実装ではありません。

ところで、ORM レイヤーはもはや悪夢ではありません。それどころか、L2S、EF、Fluent NHibernate について調べましたか? これらのいずれも XML 構成を必要としません。それぞれにプラスとマイナスのポイントがありますが、すべて完全に使用できます。

于 2010-08-16T13:01:52.117 に答える
0

このようなシナリオでは、Raven などのドキュメント データベースを検討できます: http://ravendb.net/

于 2010-08-16T13:04:58.300 に答える