Asp.net mvc 在ASP.NET应用程序中为每个用户使用单独的数据库

Asp.net mvc 在ASP.NET应用程序中为每个用户使用单独的数据库,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我正在构建一个ASP.NET MVC应用程序。 我将为每个应用程序用户存储大量数据,因此我考虑为每个用户的数据使用单独的数据库。当然,所有的星展银行在结构上都是100%相同的。它们都应该派生自某种主数据库。 有人能告诉我如何实现这一点吗?基于很多原因,每个用户建立一个数据库听起来是个糟糕的主意。如果数据或读/写是巨大的,你应该考虑分割(基于主键将数据库拆分为单独的数据库,而不是每个主键的单独的数据库)。 如果您使用的是SQL Server,只需稍加调整即可处理数十亿行,这是一个很好的参考。基于许

我正在构建一个ASP.NET MVC应用程序。 我将为每个应用程序用户存储大量数据,因此我考虑为每个用户的数据使用单独的数据库。当然,所有的星展银行在结构上都是100%相同的。它们都应该派生自某种主数据库。
有人能告诉我如何实现这一点吗?

基于很多原因,每个用户建立一个数据库听起来是个糟糕的主意。如果数据或读/写是巨大的,你应该考虑分割(基于主键将数据库拆分为单独的数据库,而不是每个主键的单独的数据库)。
如果您使用的是SQL Server,只需稍加调整即可处理数十亿行,这是一个很好的参考。

基于许多原因,每个用户一个数据库听起来是个糟糕的主意。如果数据或读/写是巨大的,你应该考虑分割(基于主键将数据库拆分为单独的数据库,而不是每个主键的单独的数据库)。
如果您使用的是SQL Server,只需稍加调整即可处理数十亿行,这是一个很好的参考。

除非您计划处理每个表中数百万行的数百万用户,否则您不需要使用多个数据库

MS Sql可以轻松地处理一个表中的10亿行,并具有良好的索引,同时保持良好的查询性能

使用多个数据库很可能只会引起头痛

也就是说,您应该设计脚本来创建数据库,然后更新脚本来更改它们,因为您必须将任何更改传播到所有数据库


但我的建议是坚持使用一个DB。如果您确实成功地解决了这一问题,那么您很可能需要重新设计数据库结构:)

除非您计划处理每个表中有数百万行的数百万用户,否则您将不需要使用多个数据库

MS Sql可以轻松地处理一个表中的10亿行,并具有良好的索引,同时保持良好的查询性能

使用多个数据库很可能只会引起头痛

也就是说,您应该设计脚本来创建数据库,然后更新脚本来更改它们,因为您必须将任何更改传播到所有数据库


但我的建议是坚持使用一个DB。如果您确实成功地克服了这一点,那么您很可能需要重新设计数据库结构:)

我认为您不应该使用人均数据库。有了适当的索引和聪明的设计,你应该很好。有很多数据库比你要设计的数据库要大得多,每个人都没有数据库。我认为你不应该每个人都使用数据库。有了适当的索引和聪明的设计,你应该很好。有很多数据库比您将要设计的数据库大得多,但每人没有数据库。我理解您的反馈,但我将使用SQL Azure DBs。通过共享DBs,我分离了其他用户造成的潜在性能影响。每个用户可能需要多GB的存储空间。用户将来将为此服务支付相对较高的价格,因此我需要预先防止潜在的性能问题。您可以查看SQL Azure Federations,它正在分片,将解决您的许多性能问题,并按用户划分数据库。我猜你对绩效的担忧并不像你想象的那么大。DB的大小实际上不是读/写负载的问题。我从未见过单个应用程序的实现,每个用户都有单独的数据库。DB模式“继承”确实没有模型好的,我如何确保用户不会意外地访问其他用户的数据?开发人员(也称我)很容易在其中一个表联接中出错……单独的数据库实际上无法提供更多的安全性。用户标识映射到共享数据库中的列或映射到另一个数据库。不正确的用户标识通常不是问题,但您确实需要确保所有查询都有一个用户标识。你的舒适感应该在测试中体现出来。只需编写一个测试来检查查询是否会从任何其他用户返回数据。但从技术上讲,这将像更改连接字符串一样简单否?我理解您的反馈,但我将使用SQL Azure DBs。通过共享DBs,我分离了其他用户造成的潜在性能影响。每个用户可能需要多GB的存储空间。用户将来将为此服务支付相对较高的价格,因此我需要预先防止潜在的性能问题。您可以查看SQL Azure Federations,它正在分片,将解决您的许多性能问题,并按用户划分数据库。我猜你对绩效的担忧并不像你想象的那么大。DB的大小实际上不是读/写负载的问题。我从未见过单个应用程序的实现,每个用户都有单独的数据库。DB模式“继承”确实没有模型好的,我如何确保用户不会意外地访问其他用户的数据?开发人员(也称我)很容易在其中一个表联接中出错……单独的数据库实际上无法提供更多的安全性。用户标识映射到共享数据库中的列或映射到另一个数据库。不正确的用户标识通常不是问题,但您确实需要确保所有查询都有一个用户标识。你的舒适感应该在测试中体现出来。只需编写一个测试来检查查询是否会从任何其他用户处返回数据。但从技术上讲,这就像更改连接字符串no一样简单?