2010-07-26 40 views
0

我打算在asp.net mvc中创建一个会计应用程序。
每个用户将支付包月,我将提供每日备份等选择构建基于Web的业务应用程序的策略

我不知道选择哪种策略:

  1. 要使用SQL CE4和单独的虚拟目录中运行应用程序为每个用户。
  2. 把一切都在一个SQL Server数据库

什么是这两个选项缺点和优点?
如果我选择选项2,则必须在代码中编写更多逻辑。我必须防止用户看到他们不应该看到的东西(更多访问数据库)。

两个最重要的事情是:

  1. 系统
  2. 能够轻松地创建单独的用户备份的一般表现。

我期望有20到30个用户。

任何建议将不胜感激。

+0

通过“为不同用户轻松创建备份”,这些逻辑备份是指这些逻辑备份,还是您的意思是数据库的每个物理备份应该只有一个用户的数据? – bryanjonker 2010-07-26 18:23:31

+0

数据库的每个物理备份只能有一个用户的数据。 – 2010-07-26 18:26:25

回答

3

我会一如既往地为选项2。我来自紧张的金融整合背景,所以选项2(对我来说至少)是最好的。

在考虑使用数据时,没有控制点。没有比选项1更多的往返行程。

系统的性能通常由程序员决定。如果你写出糟糕的代码,你可能会遇到糟糕的表现。选项2提供了最简单的备份选项,因为您只需要担心1个数据库。如果您使用1个数据库,则根本不需要考虑单独的用户。

RE:用户的往返行程(或代码中的更多“逻辑”来处理),添加“Where userID = x”有多难?

你应该使用存储过程反正来分离.NET代码从地面所以写起来应该没有了(甚至更少)往返/文件访问的问题比你有选择1

+0

+1是的,在每个查询中增加一个“Where userID = X”,我会减少往返次数。谢谢。 – 2010-07-26 18:41:09

+0

@šljaker为了强制执行此操作并避免在某些查询中意外关闭租户ID,可以使用内联表值函数来包装基表,这些函数需要每次提供租户ID。 ITVF的开销类似于视图(即最小化),优化器可以非常轻松地与它们一起工作。 – 2010-07-26 20:30:44

+0

@Cade Roux,你能告诉我任何样品吗? Tnx – 2010-07-26 21:50:38

0

如果您在单个数据库中进行多租户设计,您可能不会真正能够使用SQL Server的备份功能,因为备份单元不足以单独备份每个用户的数据。您可以使用partitions和文件组以及仅备份文件组,但分区功能并非易于管理,并且可能不适合此目的。

如果您希望为用户独立使用SQL Server的备份和恢复功能(听起来像您的评论),您可能需要将它们放在单独的数据库中。尽管如此,我会重新考虑这个需求(考虑实现选择性导出/导入),因为多租户架构更容易处理整体问题。

+0

备份是我的主要问题之一:( – 2010-07-26 21:48:50

+0

@šljaker这取决于你的备份方案 - 如果它是作为服务提供商(你)由于硬件故障恢复数据,这可能是好的,但如果你希望用户能够自行备份还原或能够在本地进行备份和还原,SQL Server备份可能不适用于此目的。 – 2010-07-27 01:49:41

相关问题