在处理小项目时,与使用真正的数据库相比,您认为将数据存储在简单的文本文件、哈希表等中的盈亏平衡点是什么?对于具有简单数据管理需求的小项目,真正的数据库是不必要的复杂性,并且违反了YAGNI.然而,在某种程度上,数据库的复杂性显然是值得的.有哪些迹象表明您的问题对于简单的即席技术来说过于复杂,需要一个真正的数据库?

注意:对于习惯于企业环境的人来说,这可能听起来像是一个奇怪的问题.然而,我的问题领域是生物信息学.我的大部分编程都是原型,而不是生产代码.我主要是领域专家,其次是程序员.我的大部分代码都是以算法为中心的,而不是以数据管理为中心的.这个问题的主要目的是让我计算出,如果我学会在代码中使用适当的数据库,而不是我通常使用的更特别的技术,从长远来看,我可以节省多少工作.

推荐答案

1)并发性.您是否有多个人访问同一数据集?然后,如果您使用自己的系统,那么它将以scalable种方式代理所有不同的读者和作者,这将是相当复杂的.

2)格式和关系:您的数据是否不能整齐地放入表 struct 中?长核苷酸序列之类的东西吗?这并不是真正方便的表格数据.

另一个例子:没有人会考虑实现像Photoshop这样的软件来以关系格式存储PSD,因为数据 struct 并不真正适合这种类型的存储或查询模式.

3) ACID(有点像#1的推论):如果原子性、一致性、完整性和耐久性不是平面文件的挑战,那么就使用平面文件.

Database相关问答推荐

删除Postgres中的JSONB列并在不停机的情况下回收空间

使用 cloud-spanner 进行本地开发

在 sql server 中存储持续时间(时间跨度)

Symfony ArrayCollection 与 PersistentCollection

无法在 MYSQL 5.5 w/MYSQL Workbench 中更改模式名称

免费的便携式数据库有哪些?

是否有任何数据库支持自动索引创建?

Redis: Get key and value on expiration

数据库中的整数与字符串

在 Firestore 中使用嵌套的单个查询

将用户数据存储在 LDAP 而不是 RDBMS 中的原因

数据库模式与数据库表空间?

如何使用 django 判断 postgresql 数据库中是否存在某些内容?

如何使用 Realm 进行排序?

如何在 MySQL 中清理或调整 ibtmp1 文件的大小?

归一化 - 2NF 与 3NF

使用 Django 的复合/复合主/唯一键

Rake aborted... table ‘users’ already exists

Guice、JDBC 和管理数据库连接

在 Heroku 上预编译assets时如何普遍跳过数据库接触