Database 数据库替代方案?

Database 数据库替代方案?,database,performance,tradeoff,Database,Performance,Tradeoff,我想知道使用数据库的利弊以及其他选择是什么?还有,哪些问题不适合数据库 我关心的是关系数据库 这是一个相当广泛的问题,但数据库非常适合管理。替代方案几乎总是意味着要设计自己的数据存储和检索引擎,而对于大多数标准/小型应用程序来说,这并不值得付出努力 不太适合数据库的一个典型场景是存储大量数据,这些数据被组织为相对较少的逻辑文件,在这种情况下,一个简单的文件系统就足够了。 对于搜索应用程序,全文搜索引擎(其中一些集成到传统的DBMS中,但一些没有集成到传统的DBMS中)可以是一个很好的选择,既可以

我想知道使用数据库的利弊以及其他选择是什么?还有,哪些问题不适合数据库


我关心的是关系数据库

这是一个相当广泛的问题,但数据库非常适合管理。替代方案几乎总是意味着要设计自己的数据存储和检索引擎,而对于大多数标准/小型应用程序来说,这并不值得付出努力

不太适合数据库的一个典型场景是存储大量数据,这些数据被组织为相对较少的逻辑文件,在这种情况下,一个简单的文件系统就足够了。

  • 对于搜索应用程序全文搜索引擎(其中一些集成到传统的DBMS中,但一些没有集成到传统的DBMS中)可以是一个很好的选择,既可以提供更多的功能(各种语言意识、拥有半结构化数据的能力、排名等),也可以提供更好的性能

  • 此外,我还见过将配置数据存储在数据库中的应用程序,虽然这在某些情况下是有意义的,使用纯文本文件(或YAML、XML等)并在初始化过程中加载底层对象可能更可取,因为这类替代方案是自包含的,并且易于修改和复制这些文件

  • 当然,根据使用情况,平面日志文件可以作为记录到DBMS的一种很好的替代方法


也就是说,在过去10年左右的时间里,DBMS系统总体上增加了许多功能,以帮助它们处理不同形式的数据和不同的搜索功能(例如:前面提到的全文搜索、XML、智能存储/处理blob、强大的用户定义功能等),从而使它们更加通用,因此,这是一项相当普遍的服务它们的优势主要在于关系数据,但是

如果您有数据要存储和查询,请使用数据库

从技术上讲,大多数东西都适合数据库。计算机用来处理数据,数据库用来存储数据

唯一需要考虑的是成本。部署成本、维护成本、时间投资,但通常都是值得的

如果您只需要存储非常简单的数据,则可以选择平面文件(文本文件)


注意:您使用了通用术语“数据库”,但有许多不同的类型和实现。

别忘了看看NOSQL数据库。这是一项非常新的技术,非常适合不适合/不适合在关系数据库中扩展的内容。

数据库的概念非常广泛。我将在这里介绍的内容中作一些简化

对于某些任务,最常见的数据库是关系数据库。它是一个基于关系模型的数据库。关系模型假设您以行的形式描述数据,这些行属于表,其中每个表都有给定的固定列数。您以“每行”的方式提交数据,这意味着您必须在单个快照中提供一行,其中包含与表中所有列相关的数据。每个提交的行通常都会获得一个标识符,该标识符在表级别(有时在数据库级别)是唯一的。您可以在关系数据库中的实体之间创建关系,例如说表中的给定单元格必须引用另一个表的行,以保持所谓的“引用完整性”

这个模型很好用,但它不是唯一的一个。在某些情况下,数据可以更好地组织为一棵树。文件系统是一个分层数据库。从一个根开始,所有东西都在这个根下,以树状结构。另一个模型是键/值对。Sleepycat BDB基本上是键/值实体的存储

LDAP是另一个数据库,它有两个优点:存储相当通用的数据,它是按设计分发的,并且它是为读取而优化的

图形数据库和TripleStore允许您存储图形并执行同构搜索。如果您有一个非常通用的数据集,该数据集可以包含实体的广泛级别的描述,那么这通常是必需的,因为这些描述非常广泛,基本上是未知的。这显然与关系模型相反,在关系模型中,您使用一组非常精确的列创建表,并且您知道每列将包含什么

也存在一些基于关系列的数据库。不是按行提交数据,而是按整列提交

所以,回答你的问题:数据库是一种存储数据的方法。从技术上讲,即使是文本文件也是一个数据库,尽管不是一个特别好的数据库。数据库背后模型的选择主要与应用程序的典型需求有关


将答案设置为CW,因为我可能说了一些严格不正确的话。请随意编辑。

Facebook、Twitter、Wikipedia等Web应用程序不适合使用您知道的数据库。对于相关文章,我建议您查看:这三篇文章实际上都使用MySQL。您应该在问题中更好地定义“数据库”一词。很抱歉,内容含糊不清,我只是想了解一下RDBMS。如果有专门的DBs,将很有兴趣在答案中加入。我正在尝试获得一个“为客户端服务器应用程序设计数据101”。