有人在想'CLR服务器'而不是'SQL Server'吗?

Shi*_*mmy 1 .net clr rdbms object-oriented-database

我想了很多次,现在我们有Linq和其他CLR语言特有的内置搜索,排序和其他功能,而不是表,集合和对象,为什么不拥有'SQL Server'或者更确切地称它为'CLR Server' (不仅是OOP服务器而且是CLR 3.5),它将是一个CLR(或COM)DLL,它暴露数据,允许用户直接使用它; 这将节省大量的cuncurrency痛苦,用两种不同语言开发的时间等等.我不是说(上帝保佑)抛弃SQL,它只是让我多次思考,我想让我们听听社区所说的话.

这个想法当然不是全新的,在FoxPro中有这样的(不同于我的想法)数据库.但我说的是一个允许外部访问DLL的纯CLR .NET 3.5+数据库,甚至不应该生成SQL查询,整个系统应该以不同的方式工作.

插入更新和删除应该有额外的Linq关键字,但它们都应该是'Linq样式'.

我100%肯定微软一直在考虑这个问题,可能他们有性能方面的考虑和更多的IDK,让我听听你的意见,我个人认为今天使用.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
Run Code Online (Sandbox Code Playgroud)

然后我们可以导入名称空间并使用ObjectContext内联.请不要说"坏代码",因为它是坏代码,我只在Stackoverflow WYSIWYG编辑器中写了一个糟糕的pseude示例,只是为了让你看到我的意思.

Rem*_*anu 6

让我猜,你是开发人员:)

您只看到数据库的"SQL"冰山一角.但语言和可编程性部分只是数据库的前门.真正定义高端RDBMS的是'ities':

  • 高可用性
  • 灾难恢复
  • 可扩展性

数据库更好地为这些提供了故事,或者它无法在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个版本.


Rob*_*vey 5

您正在描述对象数据库.这是一个:

db4o C#数据库

  • 原生于.NET 2和3.5(包括Compact Framework)
  • 100%面向对象的数据库,没有对象关系映射
  • 专为零管理环境中的嵌入式应用而设计
  • 开源和GPL下的免费

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