Database NoSql设计、AWS(DynamoDB)还是Azure(DocumentDB)?

Database NoSql设计、AWS(DynamoDB)还是Azure(DocumentDB)?,database,amazon-dynamodb,azure-cosmosdb,nosql,Database,Amazon Dynamodb,Azure Cosmosdb,Nosql,出于可扩展性的原因,我计划将我们的人员/地址/电话数据库从Sql Server迁移到NoSQL db中 我们目前所有的基础设施都在AWS和Azure上,我们正计划保持这种状态。因此,我开始研究AWS和Azure提供的工具,但我有疑问,希望能得到一些帮助 以下是我们表格的基本结构: 人 身份证件 名称 姓, DOB, 工作, 电邮地址:, 国籍, 城市新生, 等等 地址 人格, 街道, 数字, ZipCode, 城市 等等 电话 人格, 数字, 区号, 载体 等等 查询: 我们执行的主要查询是根

出于可扩展性的原因,我计划将我们的人员/地址/电话数据库从Sql Server迁移到NoSQL db中

我们目前所有的基础设施都在AWS和Azure上,我们正计划保持这种状态。因此,我开始研究AWS和Azure提供的工具,但我有疑问,希望能得到一些帮助

以下是我们表格的基本结构:

身份证件 名称 姓, DOB, 工作, 电邮地址:, 国籍, 城市新生, 等等

地址 人格, 街道, 数字, ZipCode, 城市 等等

电话 人格, 数字, 区号, 载体 等等


查询: 我们执行的主要查询是根据Person(DOB、Job等)、Address(zipcoderange、State、City等)和Telefone(Carrier、Telefone Type等)表中的列获取人员。我们需要每天筛选数百万条记录,以生成应用程序要处理的数据

我的典型查询返回以下列:

人员表:ID、姓名、姓氏、出生日期、工作、电子邮件地址、国籍、城市出生

地址表:街道、编号、邮政编码、城市、州

电话表(每人5个电话号码):号码、区号、运营商

查询通常从5k~15k记录返回,我们需要获得完整的结果集

我们还每周更新电话数据,添加/删除/更新电话号码。我们在周末这样做是为了避免影响生产应用程序的性能

我知道我必须对这个结构进行非规范化,以便于查询和提高读取性能。因此,我开始评估两个云提供商的可能解决方案:

AWS DynamoDB 据我所知,我无法实现对多个属性的查询,并且对可以创建的索引有限制。我想不出一种方法来对数据建模,以便使用上面提到的过滤器进行快速查询

在我看来,我可以对最重要的字段执行查询,然后对其余字段应用过滤。我不确定这是否是最佳的,因为我有5000多万条记录

或者是否有其他AWS服务可以帮助我实现所需的行为

Azure DocumentDB 因为它存储的JSON对象由所有属性索引,所以我可以这样做。我的性能应该不如键/值表,并且我不知道每天查询数百万条记录时的实际性能

同样,我不确定是否还有其他服务可以在Azure上获得更好的结果

结论: 我想获得一些能引导我走向正确方向的见解。我似乎有一些关于Elasticsearch等的问题可以对此有所帮助,但我不确定它是否能提供我所希望的性能,以及它是否真的是它的目的

目标 驱使我们寻找替代方案的是利用云的灵活性。现在,我们有一个大型SQL Server 24/7来托管我们应用程序的核心数据。我们希望提高查询性能并降低服务器成本

不确定如果NoSQL是一条出路,或者在数据结构发生变化的情况下仍保留在SQL Server上该怎么办

任何帮助都将不胜感激


提前谢谢

什么样的可伸缩性?读、写、存储?也许您真的想要像openldap这样的目录服务?:)由于人数非常有限,具有适当索引的SQL Server应该能够满足您的需求。文档数据库也是如此。请更详细地描述您的查询以及SQL遇到的问题。我更新了这个问题,希望能消除您的一些疑虑。如果您需要更多信息,请告诉我。要提供答案,需要以下信息-项目的大致大小和数据的总大小-数据的增长率-平均查询中的项目(也是最大值)也在查询时,您的操作需要整个数据集还是可以逐页操作?@Ashan数据库有1,2TB。db的增长速度没有那么快,100 MB/月。关于这个问题,我已经用这个信息更新了这个问题。谢谢