我正在构建一个服务(或者更确切地说是一组微服务)来充当类似社交网络的网站的后端。简而言之,这意味着我的数据如下:
- 数百万个实体
- 具有数十种属性
- 随着时间的推移,实体之间可能存在数千个连接(例如在 Facebook 上,某人可能有数千个“朋友”)。
- (有不止一种类型的连接,每一种都可能有数千个)
- 连接示例:
- 实体 A 认识实体 B
- 实体 A 已阻止实体 B
- ETC。
- 从概念上讲,每个实体都维护着其他实体的一长串标识符
- 我需要能够在哪里进行搜索
- 我可以根据要匹配的一组属性搜索所有实体
- 同时过滤掉发起实体已经存在的连接
我试图弄清楚什么是存储这些数据的最佳数据库解决方案。我不精通数据库技术,所以我需要一些建议来考虑。
我知道 SQL / 关系数据库可以轻松地针对前 2 个标准(实体数量和属性数量)进行扩展,但我不确定它们是否适合管理连接。
我需要一种合适的数据库技术,它也可以以分布式方式设置——并且最好在云环境中可用。如果那是 SQL 数据库,我将如何存储和管理连接?