android - 一个大数据库与许多小数据库
问题描述
我的应用程序处理几个类似的数据集。也就是说,它们存储在相同的表中,但数据不同。用户可以创建更多数据集。在任何情况下,这些数据集都保证是分离的。一个数据集中永远不会有任何数据以某种方式链接到另一个数据集中的数据。
我想知道,每个数据集都有一个专用数据库而不是将所有数据都放在一个大数据库中会更好吗?
如果用户在较小的数据库上工作,我希望查找时间会有所改善。有没有一个经验法则,在我担心查找时间之前,一个数据库(或表)可以保存多少条目?
我能想到的一个缺点是打开数据库会产生一些开销。但是,我不希望用户频繁切换数据集。
考虑这个例子:
该数据库包含公司、客户、产品和订单的表格。公司从不共享客户或产品,因此公司是分离的数据集。但是,所有产品、客户和订单都在一张大表中(分别针对每个表)。
对数据库的查询可能包括:
- 特定客户的所有订单。
- 特定客户订购的所有产品。
- 订购了特定产品的所有客户。
- 等等
这些查询的共同点是它们将始终在一家公司的背景下发出。然而,由于数据库不知道这个逻辑分区,所有的客户、产品和订单都会被搜索到。
如果我有多个数据库,每个公司都有一个,我的逻辑分区将被反映,并且只会搜索相关数据。不过,我不确定拥有这么多数据库的开销。
由于我是数据库模式设计的新手,我想把这个想法扔出去看看,如果几个数据库真的是一个好主意。
更新:
如果不清楚:数据库将在 Android 手机上,而不是在云端或其他地方。
解决方案
您的问题让我想起了一些讨论关系数据库与将数据存储为 json 或其他 noSQL 选项之间的区别的文章。如果不对您要完成的工作以及您可能达到的规模进行一些研究,就很难判断。但是,从维护的角度来看,您的数据库模式及其更改的灵活性将有利于单个数据库实例。您也可以使用多个表。
推荐阅读
- c# - 是否有必要 Dispose 对象包含 IFormFile(二进制文件)asp.net core 2
- python - 没有循环的Python Spacy相似性?
- c# - 如何在不使用 TryFindResource 的情况下从代码隐藏中获取 StaticResource 的实际对象?
- python - 计算熊猫的 Tf-Idf 分数?
- java - 发现能够从类型 [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] 转换的转换器
- google-drive-api - 无法与知道链接的任何人以及组织外部的人共享团队云端硬盘中的文件
- r - 如何使用正则表达式和 R 提取匹配上方的行?
- c# - datetimepicker 没有正确过滤 datagridview 数据
- c - 可执行代码的高性能 malloc 实现
- python - 使用带有 scipy 的 rbf 导致的内存错误