我有一个网站,供人们用来存储他们的业务统计数据并从中生成报告。其中一些很少相关。多个用户很少使用这些集合。有三种设计出现
该应用程序位于ASP.NET中,将作为公共服务托管。预计流量将增长到数千个信息集。 如果有的话,请建议最好和替代
答案 0 :(得分:0)
我会说一个sql server db然后使用多个“实例”或“模式”来分隔出不同的用户。由于人们正在上传他们的业务数据,因此您希望将其分离出来,并确保一个人无法访问另一个。您可能希望进行一些模拟或类似的操作,以保持所有连接详细信息(因为它将是不同的用户或类似于每个客户端的内容)。
我认为CE不是为大量数据设计的,我知道它只是将所有内容存储在平面文件中。您可能希望使用sql server来利用所有特殊功能(读取SSIS和SSRS)。
多个SQL Server数据库会产生巨大的巨额开销,您需要大量的后端电源。
答案 1 :(得分:0)
按索引在DB中查找记录的复杂性约为O(log(N))
因此,如果您将所有数据存储在单个数据库中,则每个用户都要支付与其他数据库位于同一个数据库中的价格,因为它是所有用户的总记录数的函数。对数(左右)但仍然。
因此,单独的DB可以更好地扩展。您甚至可以在不停止世界的情况下逐个更新DB的结构。或者为其自己的用户提供额外的服务。如果需要的话。
这就是理论。练习取决于文件系统查找文件的效率以及打开/关闭数据库的成本。 SQLite中的AFAIR这些操作相对便宜。
答案 2 :(得分:0)
我已经为不同的应用程序做了两种方式,我的经验是,有点反直觉,最好有一个数据库并混合数据。其中一个案例是医疗账单信息,显示和维护多个实践的患者记录,因此安全和细粒度访问至关重要。
一些原因:
架构设计的任何更改都可以在一个地方实现。
执行数据库界面的Ditto软件更改。 (当然,你可以在很大程度上抽象出来,但是谁真的呢?)
您正在创建一个实现大量软件连接交换机的要求,以处理客户区别,这些区别比表中的字段更容易和更清晰。
管理更少而不是更多的数据库更简单。
添加和删除客户时,将行添加到表并安装整个新数据库与其所有管理和维护资源及配置之间的区别就在于此。
(注意:这也是该主题的一个主题中的“SQL悲观化”之一。)