我正在尝试与LAPACK库和.net
进行通信,以便我可以在DBMS之外进行一些处理。
是否可以将send/receive
完整矩阵作为二进制或直接内存指针来处理它们?主要目的是速度,避免通过平面文件。
Oracle, SQL Server, MySQL
是否有可能支持这项技术?LAPACK
怎么样?我们可以将二进制文件或其他内容导出到.net
或c#
吗?
(所有通过原始内存指针或二进制文件)答案 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分析函数。它们非常强大,任何客户都很难击败它。