我有一个允许解析文件的应用程序。假设他们想解析1GB的CSV文件。应用程序的工作方式是存储文件的5MB预览-文件中仅存储前5MB的数据,并允许他们向其应用设置,例如:separator
是什么,{ {1}}等,
我的问题是,存储数据的最佳方法是什么?我能想到的最简单的例子是:
quotechar
通过这种方式,每当用户要保存新设置时,我们都会将转换应用于所存储的- file_id (id)
- filename (varchar)
- file_url (varchar)
- [various file settings]
- data (longtext or blob)
。
但是,我看到了两个问题:
该行本身将非常大,并且这样存储起来可能会更好:
data
file
通过这种方式,仅当我直接查询该表时,我才需要加载所有数据。
file_data
使用redis缓存之类的东西,但最终我需要 ton 的空间。 什么是存储以上内容的好方法,以便我可以快速快速生成文件预览?
我将文件存储在GCS上,为了获取其中的任何文件(无论是完整文件还是5mb),我都需要在本地下载。
答案 0 :(得分:0)
如Uueerdo所建议的,在本地存储文件预览(例如命名为md5_checksum
)以确保唯一性可能是最有意义的。这样,您就不必担心将缓存放置在中央(例如redis),并且打开和读取5MB文件只需要大约1/1000秒的时间:
>>> timeit.timeit("with open('5mbfile', 'r') as f: _=f.read()", number=1000) / 1000
0.0011376328468322755