Mysql NoSQL数据库设计

Mysql NoSQL数据库设计,mysql,sql,database,web,nosql,Mysql,Sql,Database,Web,Nosql,我正在研究SQL和NoSQL数据库——即MySQL和DynamoDB(都在AWS) 我正在构建一个约会/社交网络,我构建的演示使用了一个MySQL数据库,其中包含大约50个表,用于数据的逻辑分离,然后使用SQL查询(通常带有连接)提取所需的数据并发送回浏览器 我正在迁移到AWS,正在重建系统,我想知道是否有可能在NoSQL中100%编写这样一个站点。我知道你不知道该网站的具体情况,但它可以与任何其他约会/社交网络相比较,如facebook(显然涉及面更广)或Eharmony/Match Make

我正在研究SQL和NoSQL数据库——即MySQL和DynamoDB(都在AWS)

我正在构建一个约会/社交网络,我构建的演示使用了一个MySQL数据库,其中包含大约50个表,用于数据的逻辑分离,然后使用SQL查询(通常带有连接)提取所需的数据并发送回浏览器

我正在迁移到AWS,正在重建系统,我想知道是否有可能在NoSQL中100%编写这样一个站点。我知道你不知道该网站的具体情况,但它可以与任何其他约会/社交网络相比较,如facebook(显然涉及面更广)或Eharmony/Match Maker等

社交网站可以100%建立在NoSQL上吗?或者混合使用NoSQL和SQL是现实的


thx

需要记住的最大一点是,大多数noSQL引擎(如)不支持查询,因此这必须成为设计中的一个因素(即,在noSQL解决方案中,您认为在类似SQL的连接中理所当然的许多事情要难得多)。话虽如此,您完全可以使用noSQL解决方案构建功能齐全的应用程序。我鼓励您查看来自许多提供商的可用资源,如Cassandra、MongoDB、Dyanamo和其他许多提供商。

需要记住的最大一点是,大多数noSQL引擎(如)不支持查询,因此这必须成为您设计中的一个因素(也就是说,在noSQL解决方案中,许多在类似SQL的连接中被视为理所当然的事情要难得多).话虽如此,您完全可以使用noSQL解决方案构建功能齐全的应用程序。我鼓励您查看来自众多提供商的资源,如Cassandra、MongoDB、Dyanamo和其他许多提供商。

如果不深入了解您的具体功能,这是一个很难回答的问题之后,您将使用什么语言编写站点。有许多不同类型的NoSQL解决方案

像Dynamo和Cassandra这样的NoSQL数据库是关键值存储。它们提供了一套与MongoDB和RavenDB等文档数据库截然不同的功能。还有许多其他类型的数据库

就我个人而言,我完全可以基于RavenDB编写一个社交媒体网站。但这是因为我倾向于专注于领域驱动的设计,并且喜欢使用.Net/C#编写。它具有您需要的所有功能,如查询索引、大数据作业的地图/缩减、全文搜索和空间距离接近搜索。Y如果你想从php或javascript编程,你可以使用他们的http/RESTAPI,但他们的C#客户端更容易使用


您的需求可能与我的不同。我鼓励您在选择一种NoSQL技术之前尝试几种不同的NoSQL技术。您可能仍然会发现您需要SQL(或MySQL)数据库用于某些您的NoSQL解决方案无法处理的事情。例如,RavenDB不建议用于临时报告-因此许多人设置了单独的SQL Server数据库,并将数据从Raven复制到SQL中,以便他们可以为其超级用户提供单独的报告数据库。

这是一个很难回答的问题我们需要更深入地了解您所追求的功能,以及您将用什么语言编写站点。NoSQL解决方案有很多种

像Dynamo和Cassandra这样的NoSQL数据库是关键值存储。它们提供了一套与MongoDB和RavenDB等文档数据库截然不同的功能。还有许多其他类型的数据库

就我个人而言,我完全可以基于RavenDB编写一个社交媒体网站。但这是因为我倾向于专注于领域驱动的设计,并且喜欢使用.Net/C#编写。它具有您需要的所有功能,如查询索引、大数据作业的地图/缩减、全文搜索和空间距离接近搜索。Y如果你想从php或javascript编程,你可以使用他们的http/RESTAPI,但他们的C#客户端更容易使用


您的需求可能与我的不同。我鼓励您在选择一种NoSQL技术之前尝试几种不同的NoSQL技术。您可能仍然会发现您需要SQL(或MySQL)数据库,用于您的NoSQL解决方案无法处理的某些事情。例如,RavenDB不建议用于临时报告-因此许多人设置了单独的SQL Server数据库,并将数据从Raven复制到SQL中,以便他们可以为其超级用户提供单独的报告数据库。

他们支持查询,但您可以使用n通常更有限。这一点很好。我本可以说的一个更好的方式是“不支持如此广泛的查询范围”。MongoDB支持非SQL方式的查询,并且有索引,其他键值存储支持范围选择器。“NoSQL”本质上只是指“无SQL查询”但并非没有查询。这种区别很重要,因为某些NoSQL系统在某些问题领域实际上比SQL要好得多。我同意tadman的观点,例如,像Playorm这样的2级驱动程序支持大量SQL(包括连接)。虽然是JPA方式。它们支持查询,但您可以运行的查询通常非常有限。好的一点。我可以说的一个更好的方式是“不支持如此广泛的查询范围”。MongoDB支持非SQL方式的查询,并且有索引,其他键值存储支持范围选择器。“NoSQL”本质上只是指,“无SQL查询”但不是无查询。区别很重要,因为某些NoSQL系统在某些问题领域实际上比SQL好得多。我同意tadman的观点,例如,Playorm之类的2级驱动程序支持大量SQL(包括连接)。尽管是JPA方式。