Я занимаюсь исследованиями в различных базах данных NoSQL и теперь застрял в понимании Cassandra.
Допустим, у меня есть две модели, которые имеют n полей, одинаковых для обоих экземпляров, и m полей, которые различаются.
{
name:"Bob",
surname:"Smith",
age:31,
carName: "toyota"
}
{
name:"Ann",
surname:"Cox",
position:"Architect"
}
Итак, здесь у меня есть name и surname для обеих моделей, но другие поля могут быть любыми.
Можно ли создать таблицу данных в Cassandra для такой цели или базы данных, ориентированные на широкие столбцы, не подходят и лучше использовать ориентированные на документы?
@ernest_k да, но поддерживает ли Map вложение? Допустим, у нас есть объект Car под полем 'car'.
Ни одна карта Cassandra (в отличие, например, от DynamoDB) не поддерживает вложенность. Таким образом, у вас есть два решения: 1. Вы можете сохранить сериализованную строку (например, JSON) в качестве поля «автомобиль». Недостатком является то, что вы не можете напрямую изменять вложенные свойства, например, вы не можете сделать «SET car.model = 'something'». Вариант 2: используйте имена вложенных свойств в файле ключ карты. Например, "car.model" является ключом. Таким образом, вложенная структура «выравнивается» на невложенной карте.





Если поля относятся к одному и тому же «объекту», создайте таблицу со всеми ними и укажите только соответствующие поля во время вставки. Просто как тот. Вместо этого, если они относятся к другому объекту, создайте две разные таблицы.
Эти поля относятся к объекту, но не определены. В принципе, это может быть любой набор полей с любой глубиной.
Рассматривали ли вы использование столбца типа
Mapдля изменяющихся значений?