gpt4 book ai didi

database - 如何在文件系统中存储图像

转载 作者:太空狗 更新时间:2023-10-30 01:38:59 26 4
gpt4 key购买 nike

目前,我已经将图像(最大 6MB)作为 BLOB 存储在 InnoDB 表中。随着数据量的增长,每晚备份的速度越来越慢,阻碍了正常性能。

因此,二进制数据需要转到文件系统。 (指向文件的指针将保存在数据库中。)

数据有树状关系:

- main site
- user_0
- album_0
- album_1
- album_n
- user_1
- user_n
etc...

现在我希望数据通过目录结构均匀分布。我该如何实现?

我想我可以尝试 MD5('userId, albumId, imageId'); 并将结果字符串切片以获取我的目录路径:

  /var/imageStorage/f/347e/013b/c042/51cf/985f7ad0daa987d.jpeg

这将允许我将第一个字符映射到服务器并将目录结构均匀分布到多个服务器上。

但是,这不会按用户组织图像,可能会将 1 个相册的图像分布在多个服务器上。

我的问题是:
以平衡方式将图像数据存储在文件系统中,同时将用户/相册数据保持在一起的最佳方式是什么?

我的思考方向是否正确?或者这是完全错误的做事方式?

更新:
我将使用 md5(user_id) 字符串切片进行最高级别的拆分。然后将所有用户数据放入同一个桶中。这将确保数据均匀分布,同时将用户数据存储在一起。

  /var   - imageStorage     - f/347e/013b       - f347e013bc04251cf985f7ad0daa987d         - 0           - album1_10             - picture_1.jpeg         - 1           - album1_1             - picture_2.jpeg             - picture_3.jpeg           - album1_11             - picture_n.jpeg         - n           - album1_n

我想我会使用从后面拆分出来的 albumId(我喜欢这个想法!),以保持每个目录的专辑数量更小(尽管对于大多数用户来说这不是必需的)。

谢谢!

最佳答案

只需从后面拆分您的用户标识。例如

UserID = 6435624 
Path = /images/24/56/6435624

至于备份你可以使用MySQL Replication和备份slave数据库以避免备份时出现问题(例如锁定)。

关于database - 如何在文件系统中存储图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/191845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com