Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Web服务是可伸缩的,对吗?_Database_Performance_Web Services - Fatal编程技术网

Database Web服务是可伸缩的,对吗?

Database Web服务是可伸缩的,对吗?,database,performance,web-services,Database,Performance,Web Services,我有一个相对简单的问题,我想,在网上搜索之后,我已经知道了一些答案,但需要更多的建议。我是幕后数据库管理机制的新手 我想使用RESTWeb服务与手机用户通信,主要是Android和iPhone。web服务是用C语言编写的,通过简单而快速的查询,例如从City='London'的雇员处选择EmployeeID、FirstName、LastName、HireDate、City,来查询Microsoft SQL Server 2008数据库,所有这些字段都以最高速度被索引。web服务是每调用一次的,这

我有一个相对简单的问题,我想,在网上搜索之后,我已经知道了一些答案,但需要更多的建议。我是幕后数据库管理机制的新手

我想使用RESTWeb服务与手机用户通信,主要是Android和iPhone。web服务是用C语言编写的,通过简单而快速的查询,例如从City='London'的雇员处选择EmployeeID、FirstName、LastName、HireDate、City,来查询Microsoft SQL Server 2008数据库,所有这些字段都以最高速度被索引。web服务是每调用一次的,这意味着它们是无状态的,并且在理论上具有很强的可伸缩性

但我的问题是web服务将由第三方托管,比如GoDaddy。我过去使用过这个第三方,他们提供一些简单的web服务时没有问题,每分钟点击一到两次,但是如果我开始让100000人每分钟访问它们,会发生什么?我问了他们,我不认为他们真的理解这个问题,或者他们确实理解了,但我不确定,他们只是说:“如果你的带宽超过了你的带宽,就以我们每月xx美元/MB的价格购买更多的带宽,等等。”但我想问这里的某个人:我的解决方案是可扩展的吗?我这样问是因为有人说要买一台服务器,但首先我不想这样做,除非我确信这个第三方不能满足我的需求

因此,具体来说:REST web服务,用C传递XML编写,由Microsoft SQL Server 2008托管,每次调用,数据库和web服务方法缓存,由第三方托管,您每月支付XYZ带宽,并涉及简单、特定、快速的SQL查询。此设置可伸缩吗?它能每秒处理2000次点击吗?20000? 当然,假设您向托管这些web服务和数据库的第三方支付更多的带宽,我读到Microsoft SQL server每秒可以处理2000个连接,但我不确定这是真的还是适用的?我知道web服务并不局限于访问单个数据库,还是我错了?如果web服务受一个数据库的限制,我可以重写代码,以便使用两个或多个数据库,即,有一个连接字符串,因此如果伦敦是SQL查询城市,则使用数据库1,如果巴黎是城市,则使用数据库2等。这是真的吗


对不起,如果这个问题对数据库专业人士来说太简单了,但你必须从某个地方开始。提前谢谢。

最简单的答案是没有简单的答案


当你说每秒点击20000次时,你是指平均点击率,还是指峰值?20000是一个/巨大的/数量,一组机器比一台机器更好

数据库查询速度很慢。尽量减少它们的使用

开始考虑代理服务器,如nginx或varnish

消除对基于会话的代码的依赖,并尽可能提供静态内容

缓存,缓存,缓存


但我想最好的建议是:从小处做起,慢慢成长。

在你的描述中,你没有任何东西可以启动大而不可伸缩的警报,但是,在您真正尝试之前,您无法知道您的解决方案的可伸缩性有多大。

您所说的可伸缩性是什么意思?理想情况下,我希望不必担心GoDaddy托管我的web服务的“幕后”操作。也就是说,我从世界各地的人那里得到的单个数据库的点击率越高,GoDaddy就会想出如何让所有的东西都工作起来,也许他们甚至不必拆分数据库?例如,在SQL Server 2008中,您可以轻松为每个用户容纳20亿条记录,是吗?既然这个数据库在设计上没有并发问题,那么问题是什么呢?随着越来越多的人点击数据库,GoDaddy会收我越来越多的钱,对吗?那是可伸缩的?好的,谢谢。支持这种设计的可伸缩性的另一个因素是,不会出现数据库并发问题,两个用户几乎不会同时访问同一条记录。当你说每秒访问20000次时,你指的是平均值还是峰值?20000是一个/巨大的/数量,由一组机器提供服务比一台机器更好谢谢,我很害怕。也许每秒2000次点击更像是这样?但我对数据库的工作方式了解不够,无法理解你的评论。例如,如果您在Azure上部署一个解决方案,这会有所不同吗?因为从理论上讲,我从Powerpoint广告中看到Azure会为您扩展吗?重新代理服务器,这只是一个花哨的缓存?如果可以,我会尝试静态内容。