在什么情况下NoSQL比关系数据库(例如SQL)更好? 在切换到NoSQL具有明显优势的应用程序的哪些具体示例?

警告:出于教学目的,以下答案有点过于简单。 为您的应用程序选择存储解决方案是一个非常复杂的问题,并且每种情况都会有所不同–这仅是为了概述人们使用NoSQL的主要原因。 公司采用NoSQL可能有多种原因,但是最常见的情况是当一台数据库服务器不再足以处理您的负载时。 noSQL解决方案更适合于在数据库服务器的负载之间分配负载。 这是因为关系数据库传统上通过复制处理负载平衡。 这意味着您有多个从属数据库,它们监视主数据库中的更改并将其复制到自己。 从从设备进行读取,而对主设备进行写入。 这可以在一定程度上起作用,但是它具有令人讨厌的副作用,即从属设备总是会稍微滞后,因此在写入时间和可读取对象的时间之间存在延迟,这是复杂且错误的-易于在您的应用程序中处理。 同样,单主机无论多么强大,最终都会成为瓶颈。 另外,这是单点故障。 NoSQL通常通过分片处理此问题。 过于简化意味着用户标识为1-1000000的用户在服务器A上,用户标识为1000001-2000000的用户在服务器B上,依此类推。 这解决了关系复制所存在的问题,但是缺点是牺牲了诸如聚合查询(SUM,AVG等)和传统事务之类的功能。 对于某些案例研究,我相信Couchbase会在其网站上发布白皮书:http://www.couchbase.com/why-nos…

用户与Web应用程序进行交互的确切技术步骤是什么? (最好使用Flask框架)。

您走在正确的轨道上。 另外,Flask的绝佳选择–这是学习Web开发的绝佳选择。 用户将http请求发送到您域上的URL。 该请求将通过Internet传输,直到到达您的服务器。 Web服务器(Apache,Nginx等)将请求传递到Flask应用程序的实例进行处理。 Flask将请求中的URL匹配到与该URL关联的应用程序中的函数(如果不匹配,则Flask将返回错误)。 该函数被调用,导致python代码执行。 该函数将有权访问“请求”对象,该对象在Python中表示为字典。 对于典型的Web应用程序,此时python代码可能会查询数据库或执行其他操作。 根据请求的类型和您的应用程序执行的操作,它可能会准备JSON响应,将数据保存到某处,将请求发送到另一个应用程序等。应用程序可以执行您希望执行的任何操作。 典型的Flask应用程序将根据数据库中的数据使用Jinja准备HTML文档,但这只是一种可能。 该函数将返回一些值。 这可能是准备好的(或静态的)HTML文档,JSON对象,字符串或错误消息。 HTTP响应还将具有退出代码(如果您不指定使用什么代码,Flask会自动执行此操作),该退出代码会告诉用户浏览器已处理请求的状态。 响应被传递回Web服务器,并通过Internet传输给用户,然后在用户的浏览器(或发送请求的任何客户端应用)中进行处理。 Flask执行任何“拆卸”代码并完成对请求的处理。 关于数据库的一个注意事项–大多数Web应用程序都使用数据库,但是Web应用程序只需要是在服务器上运行的程序即可处理基于Web的请求并返回响应。 其他一切都建立在此之上。