打破集中式数据库最具成本效益的方法是什么?

Nic*_*ton 6 .net c# sql-server asp.net

继这个问题......

......客户不情愿地要求我引用选项3(价格昂贵的选项),因此他们可以将价格与印度的公司进行比较.

所以,他们要我引用(嗯).为了让我尽可能准确,我需要决定我是如何做到的.这是3个场景......

方案

拆分数据库

我最初的想法(也许是最棘手的)将在网站和桌面应用程序上产生最佳速度.但是,它可能需要在两个数据库之间进行一些同步,因为两个"系统"如此密切相关.如果做得不好而且没有经过彻底的测试,我已经知道同步在地球上可能是地狱.

在最小的系统上实现缓存

为了支持同步选项(我不喜欢),我认为将整个中央数据库和Web服务移动到他们的办公室(即内部)可能会更高效(也更便宜),并且网站(仍在托管服务器上)从中心局下载数据并将其存储在一个小型数据库中(充当缓存)......

  1. 在客户办公室(内部)设置新服务器.
  2. 将中央数据库和Web服务移动到新的内部服务器.
  3. 将网站保留在托管服务器上,但更改Web服务URL以使其指向办公室服务器.
  4. 为图像和最常访问的数据(例如产品信息)实现简单的缓存系统.

......不利的一面是,当办公室的最终用户更新某些东西时,他们的客户将有效地从60KB/s的上传连接下载数据(尽管一次,因为它将被缓存).

此外,并非所有数据都可以缓存,例如,当客户更新其订单时.此外,连接冗余成为一个重要因素; 如果办公室连接离线怎么办?没什么可做的,只是向客户显示错误信息,这是令人讨厌的,但是必要的邪恶.

神秘选项3号

建议欢迎!

SQL复制

我曾考虑过MSSQL复制.但我没有经验,所以我担心如何处理冲突等等.这是一个选择吗?考虑到涉及物理文件,等等.另外,我认为我们需要从SQL Express升级到SQL非免费,并购买两个许可证.

技术

组件

  • ASP.Net网站
  • ASP.net网络服务
  • .Net桌面应用程序
  • MSSQL 2008表达数据库

连接

  • 办公室连接:8 mbit 向下和1 mbit 向上扩展线(50:1)
  • 托管虚拟服务器:具有10兆位线路的Windows 2008

Ric*_*son 4

刚刚第一次阅读与此相关的原始问题,我想说您可能已经为解决问题奠定了基础,因为您正在通过 Web 服务与数据库进行通信。

此 Web 服务很可能是可取之处,因为它允许您在不影响客户端的情况下拆分通信。

不久前,我参与了这样一个系统的设计。

我们首先发现的是那些很少发生变化的数据,并出于分发考虑立即锁定了所有这些数据。使用 Web 服务器进行手动管理过程是更改此数据的唯一方法。

我们确定的第二件事是数据应该由本地拥有。我的意思是一次只有一个人或一个位置需要更新的数据;但这可能需要在其他位置查看。我们修复了相关表上的所有键,以确保永远不会发生重复,并且不使用自动递增字段。

第三个项目是真正共享的表格 - 尽管我们在第一阶段和第二阶段非常担心这些 - 在我们的例子中,这部分是直接的。

当我在这里谈论服务器时,我指的是带有一组相互通信的 Web 服务的数据库服务器。

按照设计,我们的架构有 1 个指定的“主”服务器。这是解决冲突的最终决定。

其余服务器首先是 item1 所涵盖的任何内容的大型缓存。事实上,这不是一个大型缓存,而是一个数据库重复,但您明白了。

每个非主服务器的第二个功能是与主服务器协调更改。这涉及一个非常简单的过程,实际上将大部分工作透明地传递给主服务器。

我们花费了大量的时间来设计和优化上述所有内容 - 最终发现,单一的最佳性能改进来自于简单地压缩 Web 服务请求以减少带宽(但它是通过单通道 ISDN 进行的,这可能是最大的区别) )。

事实上,如果您确实有 Web 服务,那么这将为您提供更大的实现方式的灵活性。

我可能会首先研究实现一种SQL Server 复制方法的可行性

通常的免责声明适用: