如果我有1G的文本文件或者更大,同时有读写.我该怎么设计它

时间:2022-08-08 17:21:18
如题:如果我有1G的文本文件或者更大,同时有读写.我该怎么设计它

一:起初我想,在读取的时候创建一个副本,先读取副本,但是前提是我不能写,如果我写了,同时也有人更新正本,我就无法同步过去了.
二:用行数对正本分页,好像也会遇到上面的问题.

百思不得其解,特此请教各位有没有类似的设计方案,这个也是一个面试题.
我想,同时读写这么大的文件不是找死吗?但是总有这么奇葩的需求.

9 个解决方案

#1


mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了

#2


您最好问下面试官,这道题对空间复杂度是否有要求
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。

#3


我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。

#4


引用 1 楼 linminqin 的回复:
mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了

这样不行,不能你读的时候给锁住了,不然别人去写.

#5


引用 3 楼 u013734720 的回复:
我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。


呵呵呵,其实这有时候也挺无奈的,考考分析能力,如果不会就和你砍砍价.

#6


引用 2 楼 xiaopeipei2004 的回复:
您最好问下面试官,这道题对空间复杂度是否有要求
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。

嗯,这个可取,类似海量数据分而治之的道理

#8


1G文本首先得定义文本的格式。目前流行的就是XML和JSON格式了。格式定下来后,就用XML数据库或JSON数据库来管理。别自己试图去管。如果自己设计来管理这样的文件,那就相当于你自己设计一个数据库管理系统。

#9


XML或JSON..这是找死啊。
控制同步用ReadWriteLock就好。
怎么使不同数据同时操作互不影响这个比较麻烦,最好是每条记录同样的长度,要不然就得手动管理索引和空间。

#1


mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了

#2


您最好问下面试官,这道题对空间复杂度是否有要求
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。

#3


我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。

#4


引用 1 楼 linminqin 的回复:
mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了

这样不行,不能你读的时候给锁住了,不然别人去写.

#5


引用 3 楼 u013734720 的回复:
我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。


呵呵呵,其实这有时候也挺无奈的,考考分析能力,如果不会就和你砍砍价.

#6


引用 2 楼 xiaopeipei2004 的回复:
您最好问下面试官,这道题对空间复杂度是否有要求
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。

嗯,这个可取,类似海量数据分而治之的道理

#7


#8


1G文本首先得定义文本的格式。目前流行的就是XML和JSON格式了。格式定下来后,就用XML数据库或JSON数据库来管理。别自己试图去管。如果自己设计来管理这样的文件,那就相当于你自己设计一个数据库管理系统。

#9


XML或JSON..这是找死啊。
控制同步用ReadWriteLock就好。
怎么使不同数据同时操作互不影响这个比较麻烦,最好是每条记录同样的长度,要不然就得手动管理索引和空间。