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

时间:2011-03-18 03:45:58

标签: c# .net sql oracle lapack

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

是否可以将send/receive完整矩阵作为二进制或直接内存指针来处理它们?主要目的是速度,避免通过平面文件。

  • Oracle, SQL Server, MySQL是否有可能支持这项技术?
  • LAPACK怎么样?我们可以将二进制文件或其他内容导出到.netc#吗? (所有通过原始内存指针或二进制文件)

3 个答案:

答案 0 :(得分:2)

我从来没有使用它,但Oracle的包UTL_NLA可以在一个VARRAY中存储一个包含多达100万个条目的矩阵,然后可以相对容易地将其传递给其他系统。

来自文档:“UTL_NLA包公开了对表示为VARRAY的向量和矩阵的BLAS和LAPACK(3.0版)操作的子集。”

答案 1 :(得分:1)

“巨大”有多大?

您可以将二进制数据存储为BLOB。它可用于图像,音频,视频,文档。不知道是否存在适合lapack的“原生”格式。

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

如果您正在谈论C#/ .Net,您可能正在谈论Windows,它实际上不允许在不同进程之间共享内存。当然,如果Oracle服务器与.Net内容不在同一台机器上,那么无论如何都无法从远程机器访问内存。

答案 2 :(得分:0)

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