1

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

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

  • 是否有可能Oracle, SQL Server, MySQL支持这种技术?
  • 图书馆怎么样LAPACK,我们可以将二进制文件或其他东西导出到.net,或者c#?(全部通过原始内存指针或二进制文件)
4

3 回答 3

2

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

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

于 2011-03-18T07:40:53.520 回答
1

“巨大”有多大?

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

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

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

于 2011-03-18T04:50:37.307 回答
0

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

于 2011-03-18T06:30:06.410 回答