У меня есть данные в следующем формате:
Сетка может содержать до миллиона строк и около 10 тыс. Столбцов.Кроме того, может быть тысячи таких документов.Я думаю, что лучший способ смоделировать эти данные - использовать подход, подобный 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>
Значение в xml Excel является ссылкой наФайл sharedStrings, поэтому что-то вроде <v>1</v>
может ссылаться на строку «Данные».
Наиболее распространенные операции, которые мне нужно разрешить для этих данных:
- Редактирование ячейки
- Перемещение / вставка / удаление столбца
- Перемещение / вставка / удаление строки
Я знаком с моделью данных EAV для электронных таблиц, но для приведенного выше,неструктурированные данные, я не уверен, лучший подход для этого.Я полагаю, что MongoDB может быть «наиболее похожим» на xml-хранилище в том смысле, что это json-хранилище, но что может быть хорошим способом сохранить эти данные?
Еще одна возможность, о которой я думал, это сохранить ее в реляционной базе данных, такой как:
- spreadsheet_id
- row
- col
- value
Однако это становится практически невозможным при рассмотрении редактирования документа, если мы разрешаем операциинапример, «Вставить новую строку в позиции 0», что буквально потребовало бы обновления каждого отдельного значения (может быть миллиарда) для этой таблицы, просто чтобы вставить одну строку.
Что может быть хорошим способомхранить это?Если кто-нибудь знает, как Google Sheets хранит их данные?