以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于二进制列的优劣,还清请版主给讲讲吧  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=57258)

--  作者:bahamute
--  发布时间:2014/9/22 9:15:00
--  关于二进制列的优劣,还清请版主给讲讲吧
原来没接触过,这种数据类型有哪些优点,缺点据说数据库会很大,而且会影响速度,具体怎样,想听听专家的意见,免得道听途说受误导。
--  作者:rjh4078
--  发布时间:2014/9/22 9:20:00
--  
帮助里关于二级制列的说明有点笼统啊 我有个疑问 一列可以插入多个文件吗?
--  作者:有点甜
--  发布时间:2014/9/22 9:29:00
--  
以下是引用rjh4078在2014-9-22 9:20:00的发言:
帮助里关于二级制列的说明有点笼统啊 我有个疑问 一列可以插入多个文件吗?

 

不可以。


--  作者:bahamute
--  发布时间:2014/9/22 9:30:00
--  
我有一个合同管理系统,影印件都是pdf格式,大小20M左右,如果改为用二进制,是否可行(注:局域网)。
--  作者:不倒的翁
--  发布时间:2014/9/22 9:32:00
--  
以下是引用bahamute在2014-9-22 9:30:00的发言:
我有一个合同管理系统,影印件都是pdf格式,大小20M左右,如果改为用二进制,是否可行(注:局域网)。

20mb的文件数量多的话还是放FTP或局域网下载的好。

--  作者:有点甜
--  发布时间:2014/9/22 9:32:00
--  

优势是,文件可以跟着数据库走,迁移数据的时候,直接拷贝数据库即可;同时,这样做相比存路径数据出错几率减少

 

劣势是,数据库文件变大,如果是频繁存储的话,数据库压力也大


--  作者:狐狸爸爸
--  发布时间:2014/9/22 9:38:00
--  

例如你有一个2M的图片。

 

如果用内置的ftp管理:

1、会自动检查之前是否显示过这个图片,如果显示过,会比较本地的图片和服务器的图片,如果服务器的图片和本地一样,则直接显示本地的图片,无需重新下载。这就是本地缓存。

2、如果窗口的图片管理器或PictureBox绑定到这个图片列,在显示这个图片的过程,你可以进行其他操作,这就是异步显示。

3、你甚至可以中断显示切换到其他行,下次再回到这一行,会从上次中断的位置重新下载,而不是全部重新下载,这就是断点续传。

4、一个单元格可以插入多个文件

 

如果使用二进制列:

1、你通过SQLLoadImage或SQLLoadFile提取这个文件的时候,没有办法本地缓存,必须每次都从数据库中完整提取这个文件。

2、在提取过程中,你也没有办法进行其他操作,也没办法中断提取切换到其他行。

3、也不能一个单元格插入多个文件。

4、但是你不用搭建FTP,保密性也更好。

 

本地缓存可以自己编码实现,设计思路:数据表增加一列,记录文件的crc值,提取文件前,计算本地文件的crc值,和数据库的比较,如果相同,直接使用本地的文件,否则重新提取。

 

所以在网速比较快,文件小巧精干的时候,用二进制列是可以的,多数时候,还是用FTP更合适。

 

[此贴子已经被作者于2014-9-22 9:47:44编辑过]

--  作者:rjh4078
--  发布时间:2014/9/22 9:50:00
--  
个人觉得二进制的比较好  数据迁移方便 保密性好 在本地应用速度影响不是非常大;另外问下老大 crc值如何获取?
--  作者:狐狸爸爸
--  发布时间:2014/9/22 9:54:00
--  
当然,未来看情况,说不定也会给二进制列加上本地缓存,异步提取的功能。
--  作者:rjh4078
--  发布时间:2014/9/22 9:54:00
--  

刚刚测试了下远程服务器,1M以内的文件基本上瞬间完成上传,一个5M的文件用了大约7秒,如果能有个进度条就好了