2011-04-25 72 views
2

我的应用程序使用数据库(用于存储扫描文档等)。这些通常是JPEG图像,大部分只是文本。用于图像的数据库存储引擎

我知道这是建议从数据库中使用图片文件,并链接到他们,而是要找回他们这样它只是更容易。该应用程序使用一台服务器和多个客户端,并且存储文件会浪费大量硬盘空间(开销,扇区分配等),并且需要使用共享文件夹和映射的驱动器和内容。慢,而且不太安全。

总之,我们的一些客户已经使用了几年我们的应用程序,他们的数据库已经成长为数十GB的,因为这些图像的居多。目前他们存储在InnoDB表(MySQL)中。

问题是:有没有更好的方法?

数据本身是一次性写入的,而不是通常会被删除(但理论上是可能的),这样的东西是缓慢的存储(合理范围内)的,不可改变的和快速的访问将是完美的。

我想使我自己的存储引擎,将包括压缩,索引和缓存,只允许每个表的两列(BIGINT,BLOB)的。这样的事情已经存在吗?

+0

我会检查大家伙在做什么。即Flickr,Tumblr,Facebook(?)等 – givanse 2013-08-24 02:51:22

回答

0

MSSQL 2005年推出的文件流,它允许你存储在数据库中三分球,但保持斑点从数据库中,并在目录(因为他们应该)。整洁的事情是,当你备份数据库时,blob也会被备份。两全其美。目录也是受限访问,通常只有SQL本身才能访问。

存储图像作为文件,保持指针在数据库中。

+0

不是很好,因为有很多图像,他们倾向于在磁盘上占用更多的空间而不是实际的空间,这就是为什么我要寻找一个写入它们的存储引擎连续。这是一个可以在一年内扫描一百万份文件的系统。 – Patrick 2011-04-26 12:08:09