linux(或BSD) 系统中,如果希望保存大量文件,用什么方案?

2 views
Skip to first unread message

Albert Lee

unread,
Sep 18, 2008, 4:39:01 AM9/18/08
to Python.cn@google, dev4s...@googlegroups.com
希望缓存大量的文件作为查询缓冲,组织成树状结构,比如:

12345678 保存成:
12/1234/12345678 这样结构

每个文件都很小,可能只有几k。 但是数量非常巨大。请问用哪种方式比较好?

jrckkyy

unread,
Sep 18, 2008, 5:01:13 AM9/18/08
to dev4s...@googlegroups.com
先可以用高性能的服务器组件阵列,用sgi 的kfs等高性能文件系统,如果哈要求更高就弄成分布式的文件系统类似 hdfs

2008/9/18 Albert Lee <hanzh...@gmail.com>

eSX

unread,
Sep 18, 2008, 5:43:24 AM9/18/08
to dev4s...@googlegroups.com
巨大是一个什么量级?

> -----Original Message-----
> From: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com]
> On Behalf Of jrckkyy
> Sent: Thursday, September 18, 2008 5:01 PM
> To: dev4s...@googlegroups.com
> Subject: Re: linux(或BSD) 系统中,如果希望保存大量文件,用什么方案?
>
> 先可以用高性能的服务器组件阵列,用sgi 的kfs等高性能文件系统,如果

Albert Lee

unread,
Sep 18, 2008, 5:56:51 AM9/18/08
to dev4s...@googlegroups.com
2008/9/18 eSX <nay...@gmail.com>:

1. 好像确实和python无关,不过也许大家对这个话题更感兴趣
2. 确实,或许在数据库里更好,不过这里的情况是,如果使用 web server 直接提供查询结果的静态文件,而不走后端的应用服务器查询的话,似乎性能最快。
3. 巨大的数量级,我希望是过亿

张立冰

unread,
Sep 18, 2008, 6:01:01 AM9/18/08
to dev4s...@googlegroups.com
你这个问题问得不详细。
过亿的量,存储占用多少?文件请求量多大?允许不允许散列到多台机器?

2008/9/18 Albert Lee <hanzh...@gmail.com>



--
The time you enjoy weasting is not weasted time!

eSX

unread,
Sep 18, 2008, 6:04:19 AM9/18/08
to dev4s...@googlegroups.com
存在于db的不好的地方在于,人很难直接看到这个数据。而是需要查询数据库的。
如果是使用关系型数据库还好。如果是使用bdb这种数据库,则需要另外开发应用程序
来查看文件。

使用文件系统,请考虑inode数量和小文件的优化。Linux下用ReiserFS+两级Hash目录
还可以。
譬如1000*1000的量级目录,100w个目录,如果是存1亿个,平均每个目录下100个文
件,还是可以容忍的。

看你的需求了。。。

Zoom.Quiet

unread,
Sep 18, 2008, 6:08:28 AM9/18/08
to pyth...@googlegroups.com, dev4s...@googlegroups.com
2008/9/18 Xin LI <del...@delphij.net>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Albert Lee wrote:
>> 希望缓存大量的文件作为查询缓冲,组织成树状结构,比如:
>>
OT 一下就好;)
俺的确对语言之外的解决之道也有兴趣

>> 12345678 保存成:
>> 12/1234/12345678 这样结构

LDAP ?

>>
>> 每个文件都很小,可能只有几k。 但是数量非常巨大。请问用哪种方式比较好?
>
> 把架构师干掉。这个是数据库的需求不是FS的需求。
>
> - --
> Xin LI <del...@delphij.net> http://www.delphij.net/

--

http://zoomquiet.org'''
过程改进乃是催生可促生靠谱的人的组织!
PE keeps evolving organizations which promoting people be good!'''

jrckkyy

unread,
Sep 18, 2008, 6:11:43 AM9/18/08
to dev4s...@googlegroups.com
N ren

2008/9/18 Zoom. Quiet <zoom....@gmail.com>

小贵子

unread,
Sep 18, 2008, 6:52:30 AM9/18/08
to dev4s...@googlegroups.com
其实读文件,磁盘IO是最大的瓶颈....所以要做好内存cache,看哪此文件的访问比较频繁,放到内存中来....

2008/9/18 jrckkyy <jrc...@gmail.com>



--
一把锋利的宝剑,要经过无数次的磨炼,才从愚钝走向飘逸

eSX

unread,
Sep 18, 2008, 8:16:41 AM9/18/08
to dev4s...@googlegroups.com
请相信OS有能力将热点文件cache住。。。。。除非你16gb内存只给开1gb的cache。

> -----Original Message-----
> From: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com]
> On Behalf Of 小贵子
> Sent: Thursday, September 18, 2008 6:53 PM
> To: dev4s...@googlegroups.com
> Subject: Re: [OT] linux(或BSD) 系统中,如果希望保存大量文件,用什么方
> 案?
>
> 其实读文件,磁盘IO是最大的瓶颈....所以要做好内存cache,看哪此文件的
> 访问比较频繁,放到内存中来....
>
>
> 2008/9/18 jrckkyy <jrc...@gmail.com>
>
>
> N ren
>
>
> 2008/9/18 Zoom. Quiet <zoom....@gmail.com>
>
>
> 2008/9/18 Xin LI <del...@delphij.net>:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Albert Lee wrote:
> >> 希望缓存大量的文件作为查询缓冲,组织成树状结构,比如:
> >>
> OT 一下就好;)
> 俺的确对语言之外的解决之道也有兴趣
>
>
> >> 12345678 保存成:
> >> 12/1234/12345678 这样结构
>
>
> LDAP ?
>
> >>
> >> 每个文件都很小,可能只有几k。 但是数量非常巨大。请问
> 用哪种方式比较好?
> >
> > 把架构师干掉。这个是数据库的需求不是FS的需求。
> >
> > - --
> > Xin LI <del...@delphij.net> http://www.delphij.net/
>
>
>
> --
>
> http://zoomquiet.org <http://zoomquiet.org/> '''

XiongJia Le

unread,
Sep 18, 2008, 8:33:35 AM9/18/08
to dev4s...@googlegroups.com
不要存成一个个文件,直接存在特殊的数据库里...

比如 gdbm 的 key = value, key 算 file name , value 放 file content.
Hash 作 index 又是单个文件, 不影响 file system.

可以改一下 gdbm 里限制 gdbm 或者 ndbm 的 value 最多只能 4k 好像...

2008/9/18 eSX <nay...@gmail.com>:

小贵子

unread,
Sep 18, 2008, 9:45:15 AM9/18/08
to dev4s...@googlegroups.com
有这方面的能力吗?
如果有,那http服务器还要做cachememory做什么呢?
谁能给个信服的证据...
2008/9/18 eSX <nay...@gmail.com>



--
一把锋利的宝剑,要经过无数次的磨炼,才从愚钝走向飘逸

eSX

unread,
Sep 18, 2008, 11:06:05 AM9/18/08
to dev4s...@googlegroups.com
你是指squid吧?
http://varnish.projects.linpro.no/wiki/ArchitectNotes

> -----Original Message-----
> From: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com]
> On Behalf Of 小贵子
> Sent: Thursday, September 18, 2008 9:45 PM
> To: dev4s...@googlegroups.com
> Subject: Re: [OT] linux(或BSD) 系统中,如果希望保存大量文件,用什么方
> 案?
>

Quengzi

unread,
Sep 22, 2008, 9:52:48 AM9/22/08
to dev4s...@googlegroups.com
可以参考数据库索引的设计思想,采用B-Tree的方式,在内存中保留一个文件目录的索
引树
文件具体的存放方式参考Google的文件系统,可以考虑索引中直接定位到文件的保存的
磁盘位置

Jiahua Huang

unread,
Sep 22, 2008, 10:12:56 AM9/22/08
to dev4s...@googlegroups.com, Python.cn@google
On 9/22/08, Quengzi <que...@gmail.com> wrote:
> 存在于db的不好的地方在于,人很难直接看到这个数据。而是需要查询数据库的。
> 如果是使用关系型数据库还好。如果是使用bdb这种数据库,则需要另外开发应用程序
> 来查看文件。
>
> 使用文件系统,请考虑inode数量和小文件的优化。Linux下用ReiserFS+两级Hash目录
> 还可以。
> 譬如1000*1000的量级目录,100w个目录,如果是存1亿个,平均每个目录下100个文
> 件,还是可以容忍的。
>

只说查询性能的话,

1. 将 bsddb 或 qdbm 放在裸设备上,
2. 将单独文件放在文件系统(或用两级 hash 目录),

哪个更快呢?

Zoom.Quiet

unread,
Sep 23, 2008, 10:07:38 PM9/23/08
to dev4s...@googlegroups.com, Python.cn@google
2008/9/18 Albert Lee <hanzh...@gmail.com>:
> --~--~---------~--~----~------------~-------~--~----~

Linux 对象存储文件系统的研究
http://www.ibm.com/developerworks/cn/linux/l-ofs/
???

--
http://zoomquiet.org'''


过程改进乃是催生可促生靠谱的人的组织!
PE keeps evolving organizations which promoting people be good!'''

[HR]金山软件常年招聘大量Py/C++人才!
https://groups.google.com/group/python-cn/web/ot-py-c
简历直投俺就好;-)

pusheng zhang

unread,
Sep 24, 2008, 1:58:25 AM9/24/08
to dev4s...@googlegroups.com
不知道你们常采用什么方式。不过我觉得合理布局是蛮重要的。

2008/9/24 Zoom. Quiet <zoom....@gmail.com>
Reply all
Reply to author
Forward
0 new messages