2

我正在建立一个用于企业管理目的的在线(付费)服务。数据库的结构如下:

我有一个联系人表,里面有人员、联系信息等。然后我还有一些其他表格,其中包含有关付款、协议和约会的信息。还有统计数据,比如这个月转账了多少钱,这个月有多少小时的约会等等。

我正在使用 MySQL(但如果需要,也可以使用 MSSQL 或其他一些服务)并且我没有接受过任何编程语言的正式培训(还)。

我正在构建一个 WPF 应用程序来访问这个数据库。还计划构建一个应用程序,以便用户可以访问他们的数据并计划新的约会并在旅途中注册付款。我要去一个登录系统来验证他们登录和使用我的服务的权利。

我的问题是关于如何构建它。我不是 SQL 专家,也没有接受过 SQL 或任何其他编程语言的正式培训。但我所知道的是,我的客户端应用程序几乎处于 alpha 阶段。

到目前为止,我已经想出了两种方法来构建它。

1. 用户得到一个单独的数据库。

我最初的想法是给每个用户一个单独的数据库,这样更容易为人们提供统计数据。此外,它还可以更轻松地通过多个单独的服务器分散工作负载。人们将登录到存储登录信息的主/主服务器,获取他们的服务器信息并以编程方式“重定向”到他们自己的数据库。传播这些数据库还可以更轻松地为用户提供个人备份。

不利的一面是我必须管理的数据库数量庞大。我计划最终拥有数十万用户。假设我希望系统能够提供给无限数量的用户。

2. 一切都存储在一个数据库中。

也可以将所有内容存储在一个数据库中。这将使数据库结构更加复杂(同时它也使整体更加简单)。我必须在每个查询中添加 'AND consumer_ID='" + MyID + "' 。(这当然是可能的)并添加一些表来处理每个用户的统计信息。

为每个用户提供相同的数据库更新会更简单。维护会更容易。

不利的一面是,将工作负载分散到单独的服务器变得更加困难,我必须构建一些东西以使单独的服务器相互镜像成为可能。此外,我必须确保工作负载在服务器之间自动分配,而不是简单地:用 X 数据库填充服务器,然后是新服务器、填充、新建等。

我没有聘请受过任何 SQL 培训的人。

现在对我来说最重要的是系统可以轻松维护,同时仍然安全可靠。我是一名业余开发者,明年上大学。我不想花费 50% 的时间来维护数据库。

我想我得到了您可能需要的大部分详细信息,如果您需要更多信息,请向他们索取。我提前谢谢你 :)

4

1 回答 1

1

只需使用解决方案 2。将工作负载分散到许多服务器的缺点是通过“分区”来完成的,请在此处查找起点:http ://dev.mysql.com/doc/refman/5.1/en/partitioning-overview .html

例如,分区将允许您将包含消费者 ID 的表的所有信息放在一个服务器上,而将所有其他信息放在第二台服务器上。或者随便你...

但我不会开始那么复杂:你现在需要吗?它会给您(无论哪种方式)带来如此大的额外开销!您还可以查看 NoSQL 数据库世界,寻找可以轻松传播到任意数量服务器的解决方案。在大多数情况下,您松散了 SQL 及其 ACID 功能;如果您需要那些 NoSQL,则不是一种选择。

于 2012-08-01T09:53:43.223 回答