我想知道使用数据库的权衡以及其他选项是什么?还有哪些问题不适合数据库?
我关心的是关系数据库。
答案 0 :(得分:5)
数据库的概念非常广泛。我将在此处介绍一些简化。
对于某些任务,最常见的数据库是关系数据库。它是一个基于关系模型的数据库。关系模型假设您在行中描述您的数据,属于每个表具有给定和固定列数的表。您在“每行”的基础上提交数据,这意味着您必须在单个镜头中提供一行,其中包含与您的表的所有列相关的数据。每个提交的行通常都会获得一个标识符,该标识符在表级别是唯一的,有时在数据库级别。您可以在关系数据库中的实体之间创建关系,例如通过声明表中的给定单元格必须引用另一个表的行,以便保留所谓的“参照完整性”。
这个模型工作正常,但它并不是唯一一个。在某些情况下,数据更好地组织为树。文件系统是分层数据库。从一个根开始,一切都在这个根下,在树状的结构中。另一个模型是键/值对。 Sleepycat BDB基本上是键/值实体的存储。
LDAP是另一个有两个优点的数据库:存储相当通用的数据,它是按设计分发的,并且它是为阅读而优化的。
图形数据库和三重存储允许您存储图形并执行同构搜索。如果您有一个非常通用的数据集,可以包含对您的实体的广泛描述,那么这通常是必需的,因此基本上是未知的。这与关系模型明显相反,在关系模型中,您使用非常精确的列集创建表,并且您知道每列将包含的内容。
也存在一些基于列的关系数据库。不是按行提交数据,而是按整列提交。
所以,回答你的问题:数据库是一种存储数据的方法。从技术上讲,即使是文本文件也是一个数据库,尽管不是特别好的数据库。数据库背后的模型选择主要取决于应用程序的典型需求。
将答案设为CW,因为我可能会说严格不正确的事情。随意编辑。
答案 1 :(得分:1)
这是一个相当广泛的问题,但数据库非常适合管理relational data。替代方案几乎总是意味着设计自己的数据存储和检索引擎,对于大多数标准/小型应用程序而言,这是不值得的。
一个不太适合数据库的典型场景是存储大量数据,这些数据被组织为相对少量的逻辑文件,在这种情况下,类似文件系统的简单系统就足够了。
答案 2 :(得分:1)
不要忘记查看NOSQL数据库。这是一项非常新的技术,非常适合在关系数据库中不适合/扩展的内容。
答案 3 :(得分:0)
对于搜索应用程序, 全文搜索引擎 (其中一些已集成到传统的DBMS中,但其中一些不是),可以是一个很好的选择,允许更多的功能(各种语言意识,半结构化数据的能力,排名......)以及更好的表现。
此外,我已经看到配置数据存储在数据库中的应用程序,虽然这在某些情况下是有意义的, 使用纯文本文件 (或YAML,XML等)并在初始化期间加载底层对象可能更为可取,因为这种替代方案具有自包含性,并且易于修改和复制此类文件。
平面日志文件 ,可以是记录到DBMS的不错选择,具体取决于当然的使用情况。
这就是说,在过去10年左右的时间里,DBMS系统总体上增加了许多功能,以帮助他们处理不同形式的数据和不同的搜索功能(例如:前面提到的FullText搜索,XML,Smart存储/处理BLOB,强大的用户定义函数等。)使它们更通用,因此是一种相当普遍的服务。 他们的力量主要依赖于关系数据。
答案 4 :(得分:0)
如果您要存储和查询数据,请使用数据库。
从技术上讲,大多数东西都适合数据库。计算机用于处理数据,数据库用于存储它们。
唯一要考虑的是成本。部署成本,维护成本,时间投入,但通常是值得的。
如果您只需要存储非常简单的数据,那么平面文件将是另一种选择(文本文件)。
注意:您使用了通用术语“数据库”,但这些术语有许多不同的类型和实现。