背景资料:
此应用程序是.NET 4 / C#Windows 使用SQLite作为后端的表单。 只有一个用户使用 数据库,绝不是这样 通过网络进行互动。
我的软件需要保存与项目记录关联的图像。我应该将图像保存为数据库本身的二进制信息;或者我应该保存文件系统上图片的路径并使用它来检索它。
我担心保存为路径时,有人可能会更改图片的文件名,这实际上会破坏我的应用程序使用。
任何人都可以提出一些建议吗?通过网络进行互动。
答案 0 :(得分:3)
“这取决于”。如果有批次的图像,则所有BLOB权重可能会使备份变得越来越痛苦(实际上,可能会排除某些仅支持有限大小的数据库实现)。但它运作良好,效果很好。文件系统很好,只要你只存储路径相对于某个未知的根,即存储“foo / blah / blip.png”,它与配置数据结合得到完整路径 - 然后你可以轻松地重新定位路径。在某些情况下,文件系统具有更简单的备份选项,但您需要将文件系统和数据库备份结合起来。
答案 1 :(得分:2)
通常,最好将它们存储在文件系统中,并在DB中存储路径。
然而,微软不久前发表了一份白皮书,研究显示,高达150K的文件可以从放入数据库中受益(当然,这只适用于SQL Server)。
之前已经多次问过这个问题:
完全重复: User Images: Database or filesystem storage?
完全重复: Storing images in database: Yea or nay?
完全重复: Should I store my images in the database or folders?
完全重复: Would you store binary data in database or folders?
完全重复: Store pictures as files or or the database for a web app?
完全重复: Storing a small number of images: blob or fs?
完全重复: store image in filesystem or database?
答案 2 :(得分:0)
首先,您检查了SQLite limits吗?如果这对您的应用程序无关紧要,我仍然会选择FS来满足存储需求,这仅仅是因为从DB获取大型BLOBS与从FS读取文件所产生的开销。您可以将文件标记为只读和隐藏,以减少重命名的可能性...您还可以将文件的文件哈希值(如MD5)存储在数据库中,以便在有人重命名时可以使用辅助查找选项该文件(当然,他们也可以移动它,在这种情况下这没有多大帮助)......