Mysql 使用NoSQL数据库实现关系化
非关系数据库正日益受到人们的关注。主要的限制是今天的复杂数据确实是相互关联的。当我们连接RDBMS中的表时,连接数据库不是很方便吗?当然,我指的只是简单的案例。想象一下三个表,包括文章、标签和关系。在像Mysql这样的RDBMS中,我们可以运行三个查询来Mysql 使用NoSQL数据库实现关系化,mysql,database,nosql,relational-database,berkeley-db,Mysql,Database,Nosql,Relational Database,Berkeley Db,非关系数据库正日益受到人们的关注。主要的限制是今天的复杂数据确实是相互关联的。当我们连接RDBMS中的表时,连接数据库不是很方便吗?当然,我指的只是简单的案例。想象一下三个表,包括文章、标签和关系。在像Mysql这样的RDBMS中,我们可以运行三个查询来 1. Find ID of a given tag 2. Find Articles connected with the captured Tag ID 3. Fetch the contents of Articles tagged wit
1. Find ID of a given tag
2. Find Articles connected with the captured Tag ID
3. Fetch the contents of Articles tagged with the term
我们通过连接执行单个查询,而不是三个查询。我认为像BerkeleyDB这样的键/值数据库中的三个查询比Mysql中的连接查询要快
这个想法可行吗?或者忽略此方法会涉及到其他问题?当然,单记录联接在两种解决方案中都非常快速,但这并不是联接的最大优势。当您将许多行与许多其他行连接在一起时,连接非常有用。想象一下,在您的示例中,您希望对100个不同的标记执行此操作。如果没有连接,您就需要对SQL的一个查询进行300次查询。当然,在这两种解决方案中,单记录连接都非常快速,但这并不是连接的最大优势。当您将许多行与许多其他行连接在一起时,连接非常有用。想象一下,在您的示例中,您希望对100个不同的标记执行此操作。如果没有连接,您就需要对SQL的一个查询进行300次查询。NoSQL数据库可以很好地支持关系数据模型。您只需要自己在应用程序中实现关系映射,而这项工作通常不是无关紧要的 在某些应用中,这项额外的工作是值得的。也许您只有少量的表,并且所需的联接非常简单。或者,您可能已经在传统关系DBMS和NoSQL替代方案之间进行了一些性能评估,发现NoSQL选项更适合您的需求,原因有很多(性能、可伸缩性、灵活性等等) 然而,你应该记住一件事。典型的SQL DBMS基本上是一个NoSQL数据库,前面有一个优化的、构建良好的关系引擎。有些数据库甚至允许您绕过关系层和 因此,当你开始思考的时候,你应该问自己,“难道没有人已经为我构建了这个吗?”答案很可能是“是的”,解决方案可能是使用传统的SQL DBMS 具体回答问题的“3个问题”部分,答案是“可能”。在NoSQL数据库中,这样的查询可能比在RDBMS中运行得更快,但是需要记住的是,这里有更多的事情要考虑,而不仅仅是查询的原始速度:
不幸的是,我们不能给出一个一刀切的答案。您必须根据应用程序和组织的需要做出判断。NoSQL数据库可以很好地支持关系数据模型。您只需要自己在应用程序中实现关系映射,而这项工作通常不是无关紧要的 在某些应用中,这项额外的工作是值得的。也许您只有少量的表,并且所需的联接非常简单。或者,您可能已经在传统关系DBMS和NoSQL替代方案之间进行了一些性能评估,发现NoSQL选项更适合您的需求,原因有很多(性能、可伸缩性、灵活性等等) 然而,你应该记住一件事。典型的SQL DBMS基本上是一个NoSQL数据库,前面有一个优化的、构建良好的关系引擎。有些数据库甚至允许您绕过关系层和 因此,当你开始思考的时候,你应该问自己,“难道没有人已经为我构建了这个吗?”答案很可能是“是的”,解决方案可能是使用传统的SQL DBMS 具体回答问题的“3个问题”部分,答案是“可能”。在NoSQL数据库中,这样的查询可能比在RDBMS中运行得更快,但是需要记住的是,这里有更多的事情要考虑,而不仅仅是查询的原始速度: