2011-03-18 59 views
1

我试图传达LAPACK库和.net所以我可以做一个DBMS以外的一些处理。任何DBMS都可以发送/接收巨大的矩阵吗?

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

  • Oracle, SQL Server, MySQL可能支持这种技术吗?
  • 什么库,LAPACK,可我们出口的二进制文件或东西.net,或c#? (全部通过原始内存指针或二进制文件)

回答

1

“巨​​大”有多大?

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

您不能提供内存地址,因为数据来自磁盘,并且不能保证Oracle是否会通过进程内存或共享内存来放置它们,并且无论何时它都可能会回收该内存或用其他方法覆盖它。

如果你在谈论C#/。NET,你可能只谈论的窗户并没有真正允许反正不同进程之间共享内存。当然,如果Oracle服务器与.Net的东西不在同一台机器上,那么无论如何你都无法从远程机器访问内存。

+0

当涉及到巨大的时候,我的意思是做一些处理,而不是为哪个DBMS设计的。那么你有没有这方面的技术? – cMinor 2011-03-18 04:52:32

+0

如果使用Linux,是否有共享内存或二进制文件的方法? – cMinor 2011-03-18 04:55:37

+0

ramdisk如何? – Marco 2011-03-18 05:25:01

0

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

+0

是的purpouse是做统计分析。但如果是这样的话,那么如何有效地将DBMS与一些数学库进行有效的通信,以便进行处理,甚至将一些进程进行平行化处理,然后在DBMS中获得结果(DBMS不是用来做一些统计数据)? – cMinor 2011-03-18 07:00:29

+0

也许你应该发布一个新问题,解释你的数据和要对其执行的分析。数据在rdbms中,Oracle也在这些数据上使用了大量的并行性。它可以节省大量的网络往返。这里有几个例子。同时寻找能够有效地为您提供电子表格计算的模型子句。很强大。 – 2011-03-18 07:14:21

2

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

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

+1

好阅读http://oracledmt.blogspot.com/2007/04/way-cool-linear-algebra-in-oracle.html和...所有的处理都在数据库中完成。据我所知,没有传递给客户。 – 2011-03-18 11:45:54

相关问题