Skip to main content

NoSQL Data Stores

So-called "Schema-less" databases allow for arbitrary keys and values within the entries in the database. K/V stores and Objects add additional restrictions.

note

These data stores are capable of storing structured data. Those use cases are covered in the Database demo.

Arbitrary Data to Spreadsheets

There is no natural way to translate arbitrarily shaped schemas to worksheets in a workbook. One common trick is to dedicate one worksheet to holding named keys. For example, considering the JS object:

{
"title": "SheetDB",
"metadata": {
"author": "SheetJS",
"code": 7262
},
"data": [
{ "Name": "Barack Obama", "Index": 44 },
{ "Name": "Donald Trump", "Index": 45 },
]
}

A dedicated worksheet should store the one-off named values:

XXX|        A        |    B    |
---+-----------------+---------+
1 | Path | Value |
2 | title | SheetDB |
3 | metadata.author | SheetJS |
4 | metadata.code | 7262 |

Data Stores

Redis

Redis has 5 core data types: "String", List", "Set", "Sorted Set", and "Hash". Since the keys and values are limited to simple strings (and numbers), it is possible to store complete databases in a single worksheet.

Sample Mapping (click to hide)

The first row holds the data type and the second row holds the property name.

Strings can be stored in a unified String table. The first column holds keys and the second column holds values:

XXX|    A    |   B   |
---+---------+-------+
1 | Strings | |
2 | | |
3 | Hello | World |
4 | Sheet | JS |

Lists and Sets are unidimensional and can be stored in their own columns. The second row holds the list name:

XXX|    C    |   D   |
---+---------+-------+
1 | List | Set |
2 | List1 | Set1 |
3 | List1V1 | Set1A |
4 | List1V2 | Set1B |

Sorted Sets have an associated score which can be stored in the second column:

XXX|    E    | F |
---+---------+---+
1 | Sorted | |
2 | ZSet1 | |
3 | Key1 | 1 |
4 | Key2 | 2 |

Hashes are stored like the string table, with key and value columns in order:

XXX|   G   |   H   |
---+-------+-------+
1 | Hash | |
2 | Hash1 | |
3 | Key1 | Val1 |
4 | Key2 | Val2 |