讨论下海量文件存储的目录结构,你会怎么做?

华宰 发布于 2014/11/18 10:32
阅读 549
收藏 0

例如每个用户一个文件夹,上千万的用户。那么应该怎么来安排这个目录结构呢?按用户名还是按时间划分更好呢?

时间:/yyyy/mmDD/[用户名]
名称:[用户名前1位]/[用户名前2位]/[用户名]

说说你会怎么做呢?

加载中
1
leo108
leo108

按名称,但是是hash之后的名称

因为用户名可能不仅仅是英文字母,还可能是一些特殊字符,一些无法作为文件名的字符

0
红薯
红薯

时间更靠谱一些。。。

0
小胸弟
小胸弟

看你的需求是什么,这个跟底层存储结构相关。

按照用户名来哈希肯定是查找效率是最高的,不然你还的找个地方存时间。不过你都上千万级别了,目录都是虚拟的吧,不会真的在磁盘上搞这么多的目录吧。

如果是虚拟的,那么无所谓了。肯定是时间好看。

0
钛元素
钛元素
反正在数据库里面,只要对应能找到文件就好,用户名肯定要用到,然后是文件对应的SHA值吧
0
jeff-dou
jeff-dou
必须时间靠谱一些
0
kslr
kslr

我觉得不会有某一天激增的情况吗?这样会造成不平均

我觉得还是按照用户名的前x位分目录,也相当于分片。

补充:

用户名转换为16进制,用第一位有16个文件夹,用第二位就有256个文件夹,看你分多层。

0
lgscofield
lgscofield
和分区的概念相似,数据仓库中我们一般都采用时间分区,比如有三个维度,按日,按月,按年,主要看需求,以用户做维度,如果注册人数超过千万,那就有千万个分区,长远考虑相对时间分区就差远了
kslr
kslr
回复 @lgscofield : 还能不能好好说话了,就此打住吧,不想生闲气。反正你也说服不了我,我也说服不了你。
lgscofield
lgscofield
回复 @kslr : 你连我说的啥意思都没看懂,你就妄加评论,说你不懂还是客气的。
kslr
kslr
回复 @lgscofield : 为何你就能这么决断的下定义呢,千万个用户就千万个分区你逗谁呢,还是你说的是那一种
lgscofield
lgscofield
回复 @kslr : 不懂不要乱说
kslr
kslr
不对吧,哪有这样算的
0
自由之信
自由之信
海量文件,應該用數據庫。
0
水牛叔叔
水牛叔叔
我怎么觉得虚拟目录合理点,建物理目录多了会不会很难管理?
返回顶部
顶部