【问题标题】:Create new database for release?为发布创建新数据库?
【发布时间】:2013-03-03 04:10:30
【问题描述】:

我们有一个数据库,其中包含我们所有软件产品的各种记录。有些记录是针对特定软件的,有些记录是由不同软件共享的。
不同的团队将锁定、编辑和更新数据库。
当我们发布不同的软件时,我们只是抓住这个单一的大数据库并与软件一起发布。

问题来了:

  • 数据库可能会变得更大,并且它包含一个软件的不必要信息,因为它包含所有软件产品的所有记录。
  • 人们似乎很容易搞砸:您正在编辑的数据库可能不是最新的;更改可能会破坏其他软件等...

我想知道这种问题的通常解决方案是什么,以下是我能想到的解决方案:

  1. 保留母数据库并为不同的软件生成子数据库。
    不同的团队可以使用 Web 界面将记录添加到母数据库,并在发布时运行一个任务,该任务基本上从母数据库复制必要的表并为发布创建一个新数据库。
  2. 不要使用母数据库。不同的软件使用不同的数据库。但是如何处理共享记录呢?

【问题讨论】:

  • 这个数据库对您的客户是只读的,还是他们使用您的软件写入数据库?
  • 数据库对客户是只读的。

标签: database sqlite database-design architecture


【解决方案1】:

我会采用您的第一种方法。这就是我在阅读您的答案之前的想法。拥有“母”数据库的好处是您可以使所有软件产品符合相同的模式。如果您愿意,它们都共享相同的模板。

然后,当您准备好发布时,就像您说的那样,您运行一个流程并生成数据库的紧凑版本并准备发布。

由于架构更新,选项 2 是个坏主意。它在概念上与分叉代码库非常相似。如果你 fork 你的代码库 10 次,那么当一个 bug 修复出现时,你必须去 10 个地方修复它并发布它。

同时考虑拥有一个母数据库可以让您轻松地对所有数据库进行查询。 “我们有多少版本?我们有多少产品?我们发布的最后一个产品是什么?”

如果拆分数据库,这种查询会更难编写。

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2017-01-25
    • 1970-01-01
    • 2016-05-15
    • 2014-10-25
    相关资源
    最近更新 更多