高交易系统建议

高交易系统建议

我是一名 SQL Server 数据库管理员和开发人员,并且拥有多年的应用程序开发经验。目前,我的一个客户有一个非常大的项目,他正在向我寻求指导。

客户已开始使用 Microsoft Access 开发系统的客户端,并表示这部分工作已接近完成。我问为什么使用 MS Access,他们告诉我,当时的负责人了解 MS Access,认为它易于使用,功能强大,足以完成这项工作,因为它只在客户端,并且已经用模拟数据进行了测试(我认为虚拟数据量非常有限,没有真正的压力/负载测试,而是简单的客户端逻辑按预期运行)。

但现在客户需要指导,于是向我求助。他们似乎认为剩下的难题很简单,全都在“数据库”方面。他们意识到需要服务器以及客户端应用程序和数据库之间的通信,但不知道实际上需要做什么或如何做。

我知道如何开发应用程序,尤其是客户端服务器应用程序。我知道如何设计和构建数据库以及所有服务器端流程和业务逻辑功能。但我不确定客户在这个特定情况下到底需要什么。

客户要求该系统通过 3G 蜂窝无线连接在客户端和服务器之间进行通信。

尽管交易可以“分批”进行,但系统仍需要具有可扩展性,因为交易量很大。

将会有多个地点,每个地点将有 2000 - 5000 名用户。

每个用户大约每十分钟就会自动与服务器通信一次。

每个用户与服务器的通信将传递大约 60 笔交易。(每 10 分钟 5000 名用户传递 60 笔交易 = 每十分钟 300,000 笔交易 [或每分钟 30k 笔交易;每秒 500 笔交易])

我对这个小组的问题是:

  1. 对于如此高交易量且可随着交易数量和地点数量的增加而扩展的系统,最佳设计是什么?

  2. 客户端应用程序的最佳开发语言是什么?(MS Access 可以工作吗??)

  3. 我知道 Microsoft SQL Server 足够强大,可以处理工作负载,尤其是在多服务器和数据分区等情况下。而且我非常确定 MySQL 也可以。但是这两个数据库中的任何一个都是最佳选择吗(请用明确的客观原因来澄清您的答案,而不仅仅是个人偏好或意见)?

  4. 客户提到 GoDaddy 以每月特定金额提供多个 MySQL 数据库,但这不需要网站/应用程序吗?GoDaddy 不只是为客户端服务器应用程序托管数据库,对吧?

  5. 这样的系统能否通过服务器和多达 5000 个客户端之间的 3G 蜂窝无线连接正常运行,并满足前面提到的交易量?

我们将非常感激您的想法和建议。

谢谢

答案1

SQL Server 和 MySQL 可以毫无问题地处理这种工作负载。每秒 500 笔交易并不是很高的工作负载。

至于 3G 蜂窝服务,您只需使用手机访问互联网,然后让其通过普通互联网联系网络服务器。

除非您已建立从最终用户到应用程序数据中心的 VPN 连接,否则您不会希望应用程序直接连接到数据库。相反,您需要在 Web 服务器(或负载平衡器后面的多个 Web 服务器)上设置 Web 应用程序,并让最终应用程序调用 Web 服务器上的 Web 方法,然后与数据库服务器通信。

虽然 GoDaddy 可以处理这个问题,但对于这种规模,您可能需要专用服务器。从 RackSpace、EC2 或 Azure 开始,然后转移到您自己的 CoLo 或数据中心的专用服务器。

答案2

我曾经以 MSAccess 开发人员的身份挣得一些钱 - 创建简单的应用程序非常容易,而且一旦你掌握了 VB,仍然可以相对快速地开发复杂的逻辑,然而,尝试将其扩展到多个用户却一直令人沮丧 - 让正确的运行时客户端软件/中间件在用户机器上工作和配置,整理记录锁定,并从远程数据库获得可接受的性能。它很快就变成了一场噩梦。而这还只是在同一个站点上有大约 30 个用户的情况下。

试图支持的想法分布于多个站点会让我尖叫着跑出大楼!

每个用户大约每十分钟会自动与服务器通信一次。...每个用户与服务器的通信将传递大约 60 个事务

所以你实际上是在谈论一个分布式数据库——天哪!!!!!!你不想要这种痛苦!

正如 mrdenny 所说 - 服务器端工作负载很低 - 并且几乎任何多用户 DBMS 都应该能够适应该级别的事务。

但如果是我的话,我绝对不会尝试使用 MS Access 实现 UI。

您没有提供太多有关站点/用户/网络之间关系的信息。您尝试使用 3G 而不是使用传统的 WAN/VPN 来连接站点似乎很奇怪,但您让站点内的客户端通过 3G 进行通信似乎也很奇怪。找到能够运行 MSAccess 的 3G 设备也很不寻常。

如果我假设每个站点都有传统的基础设施,并且这些站点通过 3G 连接,那么我会在每个站点上使用本地数据库 - 带有基于 Web 的前端(零部署)。然后分别担心在站点之间合并/发布数据(MySQL 和 MSSQL 都有工具来促进这一点 - 使用 Oracle 有点困难)。

当然,如果你有成千上万个网站和成千上万个用户,那就另当别论了。如果你能仅有的通过 3G 连接它们,那么在客户端批量处理数据可能会更有效 - 使用旧版浏览器这相当棘手,但使用 GoogleGears / HTML5 本地存储则完全可行。

即使您可以免费重新分发 MSAccess 运行时客户端,用 PHP 或 ASP 重新实现系统的成本可能也会低于部署和管理所有这些 MSAccess 实例的成本(假设客户端设备可以运行 MSAccess)。

客户提到了 GoDaddy

哦天哪。听起来就像你每隔一天在报纸上读到的公司之一每日WTF

相关内容