Раскрытие информации:
- Я возглавляю управление продуктами для Cloud Bigtable.
- Я стал одним из основателей проекта JanusGraph .
Читая вашу формулировку проблемы, я звучу так, будто вы хотите использовать либо реляционную базу данных, либо базу данных графов.Каждый из них будет иметь свои плюсы и минусы.
Подход к реляционной СУБД
Как упоминал Дан в в своем ответе , вы можете использовать управляемый MySQL или PostgreSQL через Google Cloud SQL или Google Cloud Spanner , в зависимости от ваших потребностей в масштабировании, репликации, согласованности, совместимости с существующим кодом / средами и т. Д.
Подход к базе данных графиков
Кроме того, вы можете использовать графическую базу данных , которая поможет вам легко моделировать эту информацию и эффективно запрашивать ее.
Например, вы можете развернуть Janusgraph в GKE с Bigtable и Elasticsearch и запросить данные, используя язык Gremlin , который является стандартным поддерживаемым языком обхода / запроса графов.многими графическими базами данных.
Обратите внимание, что JanusGraph + Bigtable наследует транзакционность Bigtable (который, как вы заметили, является атомарным на уровне строк).Поскольку JanusGraph хранит каждой вершины в отдельной строке в Bigtable , только одно-вершинные обновления будут атомарными.Если вы хотите обновлять транзакции через JanusGraph, вам может потребоваться использовать другой сервер хранения , например,
- BerkeleyDB (локальный, нераспределенный сервер хранения)
- FoundationDB (недавний вклад сообщества JanusGraph)
Существует много других графовых баз данных, которые вы можете рассмотреть, некоторые из которыхтакже поддерживает Gremlin или другие языки запросов графов.Например, вы можете развернуть Neo4j на GCP , если хотите, который поддерживает Gremlin и Cypher.