我做了一个人员维护屏幕。客户希望我将每个人的照片存储在数据库中,我做到了没有问题。我有一个单独的表格,用于包含两个字段 Id_person 和 Image 的图像。
我有点担心,因为这是我第一次使用数据库中的图像。当表格超过 1000/5000 个图像时,我会遇到性能问题吗?我想每张图片的大小都会有所不同。我确信我需要控制用户不要在数据库中保存非常大的图像。
什么是好的尺寸限制?客户只需要面部照片,但我相信有人会尝试使用“最后一个模型”相机制作全质量照片;)
谢谢。
我做了一个人员维护屏幕。客户希望我将每个人的照片存储在数据库中,我做到了没有问题。我有一个单独的表格,用于包含两个字段 Id_person 和 Image 的图像。
我有点担心,因为这是我第一次使用数据库中的图像。当表格超过 1000/5000 个图像时,我会遇到性能问题吗?我想每张图片的大小都会有所不同。我确信我需要控制用户不要在数据库中保存非常大的图像。
什么是好的尺寸限制?客户只需要面部照片,但我相信有人会尝试使用“最后一个模型”相机制作全质量照片;)
谢谢。
通常最好保留一个图像文件夹,而数据库只引用该文件夹。理想情况下,每个人都有一个唯一的 ID,并且“图像”文件夹中的文件与该 ID 匹配。
如果您真的想直接存储二进制数据,您可以获得 8KB JPEG 格式的合理质量照片(大约 250x250 pix @ 25% 质量)。当然,这对于打印来说是不可接受的,但对于识别来说很好。
只有您知道您是否可以在数据库服务器中接受每行额外的 8KB。
如果您绝对必须这样做,我会说将其限制为每个仅几千字节。但是,世界上的每个数据库管理员都可能会告诉您,将图像散布到数据库字段中是一个非常非常糟糕的主意。最值得注意的是,当数据库文件的大小超过 2 GB 时,性能会急剧下降。
我宁愿按照 jheddings 所说的那样做,并有一个文件夹,其中每个人的 ID 作为文件名,然后在网络共享上使用标准的 .jpg 或之后的东西,这样所有使用该应用程序的计算机都可以访问图像。
有些人发现仅使用 ID 不够好,以防照片需要删除或存档,在这种情况下,他们会将 NVARCHAR(MAX) 字段放入数据库并将网络文件路径存储到图像而不是实际图片。
如果您的客户绝对不能拥有网络共享路径,我只会将图像弄脏。
as long as it is in separate table with ID|BLOB only there shouldn't any performance issues fetching that photo, but on the other side i prefer keeping in DB only references to files on hdd (or even better if its only user photo you dont realy need a reference because user with ID 1 goes to /images/1.jpg)