SQLite:使用一个文件与使用多个文件

Tan*_*ngo 6 python sqlite

我正在使用 Python 和 SQLite3 开发一个项目。我不希望使用任何大量的记录(比我做过的其他一些没有表现出任何显着性能损失的项目要少),并且我正在尝试决定是否应该将整个数据库放在一个文件中或多个文件。这是一个分类帐程序,它将在一个数据库文件中保存所有供应商的名称、配置信息和用户的所有数据,但我正在考虑为每个分类帐使用不同的数据库文件(在将不同分类帐用于不同目的的情况下)或投资活动)。

我知道,从这里开始,我可以在需要时跨不同文件中的数据库进行联接,所以我看不出有任何理由必须将所有表保留在一个数据库中,但我也看不出有什么理由我必须将所有表保留在一个数据库中。需要将它们分成不同的文件。

在 SQLite 中使用一个数据库与使用多个数据库有何不同?使用一个文件或使用多个文件的优点和缺点是什么?使用一种格式而不是另一种格式是否有令人信服的理由?

Goo*_*gie 2

这里有几点需要考虑。欢迎在评论中添加更多内容。

优点:

  1. 您可以将每个数据库文件放在不同的物理驱动器上,并从并行读/写操作中受益,使这些操作稍微快一些。

缺点:

  1. 您将无法跨数据库创建外键。
  2. 依赖于多个数据库中的表的视图将要求您始终附加所有数据库,并为附加数据库使用完全相同的名称(如果SELECT内部定义的语句不正确,则查询视图将报告错误,但仅在查询时才会编译和验证) )。
  3. 触发器不能跨数据库操作,因此某些表上的触发器只能查询同一数据库的表。
  4. 跨数据库的事务将是原子的,但前提是主数据库既不是 WAL 模式,也不是数据库:memory:

换句话说,您可以实现一定的速度提升(假设您有文件驱动器),但您会失去数据库设计的一些灵活性,并且更难保持一致性。