Q: Modelling non-structured tabular data in a database I have data that is in the following format:

The grid can be up to a million rows and about 10k columns. Furthermore, there may be thousands of documents like this. I think the best way to model this data is using the Excel-like approach, which, using XML, comes out to something like the following:
<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>

The value in the Excel xml is a reference to a sharedStrings file, so something like <v>1</v> could reference a string "Data".
The most common operations I need to allow on this data are:


*

*Editing a cell

*Moving/inserting/deleting a column

*Moving/inserting/deleting a row


I'm familiar with the EAV data model for spreadsheets, but for the above, non-structured data, I'm not sure the best approach for this. I suppose MongoDB might be the "most similar" to an xml-store, in that it's a json-store, but what might be a good way to save this data? 
Another possibility I was thinking was storing it in a relational database such as:
- spreadsheet_id
- row
- col
- value

However, this becomes almost impossible when considering the editing of the document, if we're allowing operations such as "Insert a new row at position 0", which would literally require updating every single value (there could be a billion) for that spreadsheet, just to insert a single row.
What might be a good way to store this? If anyone knows, how does Google Sheets store their data?
