C# 任何DBMS都可以发送/接收巨大的矩阵吗?

C# 任何DBMS都可以发送/接收巨大的矩阵吗?,c#,.net,sql,oracle,lapack,C#,.net,Sql,Oracle,Lapack,我正在尝试与库和.net通信,以便在DBMS之外进行一些处理 是否可以发送/接收作为二进制或直接内存指针来处理完整矩阵?主要目的是提高速度并避免通过平面文件 Oracle、SQL Server、MySQL是否可能支持这种技术 库作为LAPACK,我们可以将二进制文件或其他东西导出到.net,或c? (全部通过原始内存指针或二进制文件) 有多大是“巨大” 您可以将二进制数据存储为blob。它可以用于图像、音频、视频和文档。不知道是否有适合lapack的“本机”格式 您不能提供内存地址,因为数据来

我正在尝试与库和
.net
通信,以便在DBMS之外进行一些处理

是否可以
发送/接收
作为二进制或直接内存指针来处理完整矩阵?主要目的是提高速度并避免通过平面文件

  • Oracle、SQL Server、MySQL是否可能支持这种技术
  • 库作为
    LAPACK
    ,我们可以将二进制文件或其他东西导出到
    .net
    ,或
    c
    ? (全部通过原始内存指针或二进制文件)
有多大是“巨大”

您可以将二进制数据存储为blob。它可以用于图像、音频、视频和文档。不知道是否有适合lapack的“本机”格式

您不能提供内存地址,因为数据来自磁盘,而且无法保证Oracle是否会将它们放入进程内存或共享内存,而且无论哪种方式,它都可能随时回收该内存或用其他内容覆盖该内存


如果你说的是C#/.Net,你可能说的是Windows,它实际上不允许在不同进程之间共享内存。当然,如果Oracle服务器与.Net服务器位于不同的计算机上,那么您无论如何都无法从远程计算机访问内存。

简短的回答是不,您不能。 在SQL数据库中,Oracle包含返回数据集,它们可以在该数据集的列中包含二进制数据。在这样一个blob中,可以是几乎任何大小的任何格式。需要在客户机上进行哪些处理?
如果这是某种统计分析,请检查Oracle分析功能。它们非常强大,任何客户端都很难做到这一点。

我从未使用过它,但Oracle的软件包可以在单个VARRAY中存储一个包含多达100万个条目的矩阵,然后可以相对轻松地将其传递给其他系统


从文档中可以看出:“UTL_NLA包公开了BLAS和LAPACK(3.0版)对向量和矩阵(表示为varray)的操作子集。”

当我指的是进行一些处理时,DBMS不是专门为这些操作设计的。那么,正如您所描述的,有什么技术可以做到这一点呢?如果使用Linux,有没有一种共享内存或二进制文件的方法?外部程序可以做到这一点。是的,目的是做统计分析。但是如果是这样的话,你将如何有效地将DBMS与一些数学库进行通信以进行处理,甚至并行处理一些过程,然后在DBMS中得到结果(DBMS不是设计用来做统计之类的事情的)?也许你应该发布一个新的问题,解释你的数据和对其进行的分析。数据在rdbms中,Oracle也在该数据上使用大量并行性。它节省了大量的网络往返。这里有几个例子。还要寻找有效地提供类似电子表格的计算的model子句。非常强大。很好的阅读这里和。。。所有处理都在数据库中完成。就我所能看到的而言,不要把它交给客户。