在数据库中建模非结构化表格数据

时间:2019-04-11 23:32:44

标签: excel xml database-design spreadsheet

我的数据格式如下:

enter image description here

网格可以多达一百万行和约一万列。此外,可能有成千上万个这样的文档。我认为,对数据进行建模的最佳方法是使用类似于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表格如何存储其数据?

0 个答案:

没有答案