代码之家  ›  专栏  ›  技术社区  ›  user1785730

一个大数据库与多个小数据库

  •  0
  • user1785730  · 技术社区  · 5 年前

    我的应用程序处理几个类似的数据集。也就是说,它们存储在相同的表中,但数据不同。用户可以创建更多的数据集。在任何情况下,这些数据集都是不相交的。一个数据集中永远不会有任何数据以某种方式链接到另一个数据集中的数据。

    我在想,是否应该为每个数据集都有一个专用的数据库,而不是将所有数据都放在一个大数据库中?

    如果用户在一个较小的数据库上工作,我希望查找时间会有所改善。在我担心查找时间之前,有没有一个经验法则,一个数据库(或表)可以容纳多少个条目?

    我能想到的一个缺点是打开数据库会产生一些开销。但是,我不希望用户频繁地切换数据集。

    考虑这个例子:

    数据库包含公司、客户、产品和订单的表格。公司从不共享客户或产品,因此公司是分离的数据集。然而,所有的产品、客户和订单都在一个大表中(分别对应于每个表)。

    对数据库的查询可能包括:

    • 特定客户的所有订单。
    • 特定客户订购的所有产品。
    • 所有订购了特定产品的客户。
    • 等。

    全部的 将搜索客户、产品和订单。

    因为我是数据库模式设计的新手,所以我想把这个想法扔出去看看,几个数据库是否真的是个好主意。

    更新:

    以防不清楚:数据库将在Android手机上,而不是在云端或其他地方。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Sukhi    5 年前

    1. 这桌子多肥啊
    2. 硬件尺寸

    作为一般方法,一个数据库理论是可取的。现在的服务器功能相当强大,在处理性能优化时有多种选择,例如-

    1. 内存数据库
    2. 分析服务,如SSAS

    现在,使用一个数据库的最大好处是-您的开发和测试将很快。那是什么意思?假设您需要在一个表中添加/删除/修改一个字段。现在,如果您有10个不同的数据库,那么您将需要在10个不同的位置进行完全相同的更改,然后再对其进行测试。如果更改频繁,那么您可能最终会编写一个通用脚本。而且这个脚本总是有可能被破坏,例如数据库更改、补丁更新等等。然而,在一个数据库的情况下,所做的努力是直接的十分之一。另一个好处是数据库管理/监视将很容易,例如添加索引。

    免责声明:在不了解您的用例和性能需求的情况下,以上所有内容都是非常通用的。

        2
  •  1
  •   Dean    5 年前

    你的问题让我想起了一些讨论关系数据库与将数据存储为json或其他noSQL选项之间区别的文章。如果不做一些研究,你想完成什么,你可能达到的规模是很难判断的。但是,从维护的角度来看,您的数据库模式及其更改的灵活性将有利于单个db实例。你最好多张桌子。

        3
  •  1
  •   Pavlo Ostasha    5 年前

    好吧,这是纯性能的问题。你应该知道你的数据库应该有多大,以及你应该存储在单独数据库中的所有数据的多大-如果这个数量是一般数据库的20%左右,而且只会减少-使用一个数据库,如果它可能增加分配50%或更多的通用数据库-你可以考虑单独的数据库。

    数据库的一般大小也很重要。现代设备可以相对舒适地使用高达500mb(约500000条粗线)的数据库。它将处理更多,但需要对UX、UI和scheme进行一些修改,以尽量减少调用(分页、索引等)。虽然如果你运行这样一个应用程序的某个弱设备,它会粉碎。

    同时了解SQLite是如何工作的(RAM中的虚拟表),它高度依赖于应用程序可访问的RAM量。最好使用最大为100mb的db。

    正如你所看到的,没有单一的方法-你必须根据你的应用程序用例和数据库的预测大小来选择。

        4
  •  -1
  •   cci sugar    5 年前

    我会选择一个数据库-少维护和可能出错的东西。 确保其优化和索引