Ответ зависит от того, как вы будете использовать данные. На основании индексов, которые вы указываете, я предполагаю, что вы хотите искать по символу и данным. Далее я предполагаю, что вы хотите иметь возможность получить список данных за определенную дату или даты / статистику для данного символа. Данные о запасах статичны, поэтому нам не нужно беспокоиться о возможности обновления нашей схемы.
Здесь мы можем работать с семейством из одного столбца, которое мы будем называть StockData. Каждый символ будет иметь ряд, как и каждая дата. Таким образом, для вышеуказанной записи у вас будут ключи «GOOG» и «2005/01/01».
Для первого типа ключа (символов) ваши имена столбцов будут выглядеть примерно так: «2005/01/01-start» и «2005/01/01-end» со значениями столбцов, которые являются начальными и конечными значениями.
Для второго типа ключа (даты) имена столбцов будут выглядеть примерно так: «GOOG-start» и «GOOG-end». Опять же, начальное и конечное значения будут сохранены как значения столбца.
Для иллюстрации:
Column Family: StockData
------------------------------------------------------------------------------------
GOOG | 2005/01/01-start | 2005/01/01-end | 2005/01/02-start | 2005/02/01-end |
| 500 | 501 | 501 | 600 |
APPL | 2005/01/01-start | 2005/01/01-end | 2005/01/02-start | 2005/02/01-end |
| 354 | 360 | 360 | 100 |
2005/01/01 | GOOG-start | GOOG-end | APPL-start | APPL-end |
| 500 | 501 | 354 | 360 |
2005/01/02 | GOOG-start | GOOG-end | APPL-start | APPL-end |
| 501 | 600 | 360 | 100 |
Теперь вы можете выбрать все или некоторые характеристики для символа (упорядоченные по дате), используя функцию get_slice в строке символа. Точно так же вы можете получить некоторые или все характеристики за день (упорядоченные по символу).
В системах NOSQL существует столько же способов структурировать ваши данные, сколько и разработчиков. Это ни в коем случае не единственный способ. Просто кое-что, чтобы вы начали.