1

私は何度も考えていましたが、今日では、Linqやその他のCLR言語固有の組み込みの検索、並べ替え、その他の機能がテーブル、コレクション、オブジェクトに対してあるので、「SQLServer」ではなく「CLRServer」と呼んでください。 (OOPサーバーだけでなくCLR 3.5)これはCLR(またはCOM)DLLであり、データを公開して、ユーザーがそのデータを直接参照できるようにします。これにより、通貨の問題、2つの異なる言語での開発時間などの多くを節約できます。私は(神は禁じられている)SQLを捨てると言っているのではなく、それは何度も頭を悩ませているだけです。コミュニティが何を言っているのか聞いてみようと思いました。

もちろん、このアイデアは完全に新しいものではありません。FoxProにはそのような(私のアイデアとは異なる)DBがあります。しかし、私は、DLLへの外部アクセスを許可する純粋なCLR .NET 3.5+ DBについて話していますが、SQLクエリを生成することすらなく、システム全体の動作が異なるはずです。

挿入の更新と削除には追加のLinqキーワードが必要ですが、それらはすべて「Linqスタイル」である必要があります。

Microsoftは、パフォーマンスの考慮やIDKの追加が行われる前に、これについて考えていたと100%確信しています。ご意見をお聞かせください。個人的には、今日の.NET 3.5-4.0では、コレクションの処理や拡張メソッドなどがあればと思います。すべてのデータをオブジェクトとして扱うサーバーでは、それは本当にクールかもしれません(コーディングに関しては、パフォーマンスについてはどうでしょうか)。

なんって?この質問が適切な場所で行われたことを願っています。事前に謝罪を受け入れてください。ここに属していない場合は、コメントしてください。削除します。

この悪い例については申し訳ありませんが、アイデアを入手してください:

Module Module1

    Sub Main()
        ClrServer.MyDataBase.ObjectContext.MyTables.Add(New ClrServer.MyDataBase.MyTable)
        Try
            ClrServer.MyDataBase.SaveChanges()
        Catch e As ClrServer.UpdateException
        End Try

        Dim x = From a In ClrServer.MyDataBase.ObjectContext.MyTables Where a IsNot Nothing
        Dim y = From a In ClrServer.MyDataBase.ObjectContext.MyOtherTables Where a IsNot Nothing
        Dim z = From a In ClrServer.MyDataBase.ObjectContext.MyFreakingTables Where a IsNot Nothing

        'So far no access to server made, the local maintainer hold up the request
        'Connection to server is going to be made in the next line
        'and previous 3 queries will be loaded then.
        ClrServer.MyDataBase.ObjectContext.Execute()
    End Sub

End Module

'This is server side code, there should be internal ways to connect to real data when executing.
Namespace ClrServer
    Namespace MyDataBase
        Public Class MyTable

        End Class


        Module ObjectContext
            Public MyTables As List(Of MyTable)
            Public Sub SaveChanges()

            End Sub
        End Module
    End Namespace
End Namespace

次に、名前空間をインポートして、ObjectContextをインラインで使用できます。「悪いコード」とは言わないでください。悪いコードです。私が言っていることを確認するために、StackoverflowWYSIWYGエディターで悪い疑似例を書いただけです。

4

5 に答える 5

6

推測させてください、あなたは開発者です:)

データベースの「SQL」の氷山の先端だけが表示されています。しかし、言語とプログラム可能性の部分は、データベースの正門にすぎません。ハイエンドRDBMSを実際に定義するのは、「都市」です。

  • 高可用性
  • 災害復旧可能性
  • スケーラビリティ

データベースにはこれらのストーリーが含まれている必要があります。そうしないと、SQL Serverが主に競合することを目的とした「ミッションクリティカルな」市場(つまり、MSSQL-DB2-Oracleの勝利市場)では競合できません。ところで、あなたは質問をsql-serverとしてマークしたので、より一般的な「RDBMS対OODB」パスに取り組むのではなく、これに固有の答えを出すことができます。

これらのハイエンド要件を方程式から外すと、クイック検索を実行して、「データベースの将来」チャートを主張する無数のプロジェクトを見つけることができます。

それは物事がその方向に進んでいないという意味ではありません。SQL 2005とCLRの統合により、氷は崩れました。SQL 2005では、CLRは新しいアプリケーションで使用できる機能でしたが、それに基づく内部構造はありませんでした。明らかに、ミッションクリティカルなプラットフォームがそのような新しいテストされていない機能に依存することを望む人は誰もいないでしょう。SQL 2008では、状況が少し進んで、CLRに基づいて出荷された一部のシステムデータ型(地理データ型と地理空間データ型)があります。

一方、Anders HejlsbergがC#3.0で行った作業は本当に革新的であり、言語の多くの要素が非常に一貫して組み合わされて、新しい抽象化であるLINQを提供しました。プログラミング言語で発生するパラダイムの変化は、スタックのさらに下のデータベースに浸透しますか?私はかなり確信しています。時間がかかりますか?私の賭けは少なくとも2つのリリースです。

于 2009-07-24T03:04:55.400 に答える
5

オブジェクトデータベースについて説明しています。これが1つです:

db4o C#データベース

  • .NET 2および3.5にネイティブ(Compact Frameworkを含む)
  • 100%オブジェクト指向データベース、オブジェクトリレーショナルマッピングなし
  • 管理者ゼロの環境での組み込み使用向けに設計されています
  • オープンソースでGPLの下で無料

http://www.db4o.com/s/csharpdb.aspx

于 2009-07-24T02:51:06.203 に答える
1

きちんとしたものになりますが、オブジェクトモデルとデータストアの間に追加の抽象化レイヤーがあると、多くの最適化が可能になります。SQLレイヤーを削除する場合に再発明する必要があるクエリでSQLServerにぶつかると、SQLServerの内部で多くのすばらしいことが起こっています。いつかそれが起こると確信していますが、今日そのようなことを正当化するのに十分な利点があるかどうかはわかりません... JMHO ...

于 2009-07-24T02:57:27.877 に答える
1

仕事に適したツールを使用する。

私はオブジェクトデータベースに対して何も持っていませんが、SQLは、クエリを最適化および並列化できる機能的な方法でクエリを表現するのに非常に優れています。これを効果的に行うには、データが規則的である必要があります。そのため、SQLServerがあります。

事実上、SQLは、現象的に大きなデータセットを効率的な方法で保存および検索するための適切なツールであると考えています。これを優れたツールとマッピングと組み合わせると、理論的には両方の長所を生かすことができます。

PS:あなたが説明していることに収束していると思います。SQL2005はすでに.Netデータ型とCLRプロシージャをネイティブにサポートしているので、将来これが採用されれば、SQLサーバーの素晴らしいベースを活用するオブジェクトデータベースを持つことができます。

于 2009-07-24T03:02:56.107 に答える
0

LINQ to SQLは、.NETFrameworkに同梱されているO/ RM(オブジェクトリレーショナルマッピング)実装であり、.NETクラスを使用してリレーショナルデータベースをモデル化できます。次に、LINQを使用してデータベースにクエリを実行したり、データベースからデータを更新/挿入/削除したりできます。

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

于 2009-07-24T02:43:38.010 に答える