创建新数据库时

发布于 2024-09-09 05:35:35 字数 197 浏览 6 评论 0原文

我有一个一般的数据库设计问题:什么时候创建新数据库而不是向现有数据库添加新表更好?这个问题与设计/可维护性以及性能问题有关。

背景:我们通过每天晚上将数据导入到名为 RM2 的数据库中来镜像客户的主表。一些新的(ASP.Net-)项目也需要访问这些数据,现在我想知道是否应该为每个项目创建新的数据库或将它们的表与 RM2 合并(当前大小:37991.94 MB)。

I have a general Database Design question: When is it better to create a new Database instead of adding new Tables to an existing? The question is related to design/maintainability andalso performance issues.

Background: we are mirroring the main tables of our customer by importing the data every night into our DB called RM2. Some new (ASP.Net-)Projects need access to this data too, now i'm wondering if i should create new databases for each project or merge their tables with the RM2(current size: 37991.94 MB).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏有森光若流苏 2024-09-16 05:35:36

这不是数据库设计问题。这是一个组织问题。这个问题的组织方面比技术问题重要得多。

答案是:任何让你作为开发人员的生活最轻松的事情

例如,你说:

一些新的 (ASP.Net-)项目也需要访问此数据。

这些项目与您的项目的整合程度如何?您实际上共享数据(或写入相同的表)吗?例如,如果您对其中一个表进行了重大更改,是否需要同时更改其他项目中的代码? (有时两个项目之间很难同步)。

如果您实际上并不共享数据(除了客户数据,我认为这些数据实际上是只读的),则使用单独的数据库(或模式)。这使得变更更容易管理。

另一个技巧是在每个数据库中拥有一组客户数据视图,这些数据位于另一个模式的其他地方。

因此,每个项目都有一个数据库,每个数据库中都有客户数据的视图,这些数据位于一个单独的数据库中。

性能实际上不应该成为问题,除非数据库位于不同的计算机上。

This isn't a database design question. This is an organisational question. The organisational aspects of this question are much more important than technical questions.

The answer is: whatever makes life easiest for you as developers

For instance, you say:

Some new (ASP.Net-)Projects need access to this data too.

How integrated are these projects with your project? Do you actually share data (or write to the same tables)? For instance, if you make a breaking change to one of your tables, do you need to make changes to the code in the other projects at the same time? (Sometimes really hard to synchronize between two projects).

If you don't actually share data (apart from the customer data, which I assume is effectively read-only), then use separate databases (OR schemas). This makes changes a lot easier to manage.

Another trick is to have in each database a set of views onto the customer data, which lives in elsewhere, in another schema.

So, have a database per project, with views in each database onto the customer data, which lives in a single separate database.

Performance shouldn't really be an issue, unless the databases live on separate machines.

盛装女皇 2024-09-16 05:35:36

如果任何项目只想使用自己的数据库,您可以为项目获取其他数据库。但如果你想获得这个数据中心,你应该为每个项目创建一个其他共享数据库+自数据库。

You can get other database for projects if any project want use only self database. But if you want get datacenter of this you should create for it a other shared database + self database for each project.

迷爱 2024-09-16 05:35:35

我不一定会回答您的问题,但我也会给您提供一些其他问题供您考虑:

  1. 何时应将文件添加到数据库中的文件组? - 当文件变得太大时,其中“太大”可能是一个意见问题。
  2. 什么时候应该向数据库添加新文件组? - 当您希望能够优化不同数据库操作的磁盘使用情况时。
  3. 什么时候应该向数据库添加新架构? - 当您拥有一组逻辑上相关的对象并且可能需要不同的用户默认权限时。
  4. 什么时候应该向我的应用程序添加新数据库? - 当您不需要两个数据库中的任何表之间的引用完整性时。当您不想允许任何所有权链权限在两组对象之间交叉时。当您想要独立备份和恢复时。当您希望对两组数据使用不同的 SQL Server 恢复模型时。

我想这可能已经回答了你的一些问题。 ;-)

I won't necessarily answer your question, but I'll give you a bunch of other questions to consider as well:

  1. When should I add files to a filegroup in my database? - When files get too big, where "too big" may be a matter of opinion.
  2. When should I add a new filegroup to my database? - When you want to be able to optimize disk usage for different database operations.
  3. When should I add a new schema to my database? - When you have a set of objects that are logically related and may require different default permissions for users.
  4. When should I add a new database to my application? - When you don't need any referential integrity between any of the tables in the two databases. When you don't want to allow any ownership-chained permissions to cross between two sets of objects. When you want to independently backup and restore. When you want different SQL Server recovery models for two sets of data.

I guess that may have answered your question some. ;-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文