我的数据格式如下:
网格可以多达一百万行和约一万列。此外,可能有成千上万个这样的文档。我认为,对数据进行建模的最佳方法是使用类似于Excel的方法,该方法使用XML,结果如下所示:
<sheetData>
<row r="1" spans="1:4" x14ac:dyDescent="0.2">
<c r="A1" s="1" t="s">
<v>0</v> <!-- Means Value of type String (t="s") at
A1 with value found at index 0 in
a sharedStrings reference document -->
</c>
<c r="B1" s="1"/> <!-- Means no data at cell B1 -->
<c r="C1" s="1"/> <!-- Means no data at cell C1 -->
<c r="D1" s="1"/> <!-- Means no data at cell D1 -->
</row>
<row r="2" spans="1:4" x14ac:dyDescent="0.2">
<c r="A2" s="1"/>
<c r="B2" s="1" t="s">
<v>1</v>
</c>
<c r="C2" s="1"/>
<c r="D2" s="1"/>
</row>
<row r="3" spans="1:4" x14ac:dyDescent="0.2">
<c r="A3" s="1"/>
<c r="B3" s="1"/>
<c r="C3" s="1" t="s">
<v>2</v>
</c>
<c r="D3" s="1"/>
</row>
<row r="4" spans="1:4" x14ac:dyDescent="0.2">
<c r="A4" s="1"/>
<c r="B4" s="1"/>
<c r="C4" s="1"/>
<c r="D4" s="1" t="s">
<v>3</v>
</c>
</row>
</sheetData>
Excel xml中的值是对sharedStrings文件的引用,因此类似<v>1</v>
之类的东西可以引用字符串“ Data”。
我需要对此数据执行的最常见操作是:
我熟悉电子表格的EAV数据模型,但是对于上面的非结构化数据,我不确定这样做的最佳方法。我想MongoDB可能与xml存储“最相似”,因为它是json存储,但是什么是保存此数据的好方法?
我正在考虑的另一种可能性是将其存储在关系数据库中,例如:
- spreadsheet_id
- row
- col
- value
但是,如果考虑允许诸如“在位置0插入新行”之类的操作,这实际上将需要更新每个单个值(可能有十亿),那么在考虑对文档进行编辑时,这几乎变得不可能。对于该电子表格,只需插入一行。
什么是存储此内容的好方法?如果有人知道,Google表格如何存储其数据?