什么是网站的SQL数据库存储的替代方案?

问题描述 投票:19回答:15

如果您的存储需求很小,SQL数据库就会过度。当我年轻和愚蠢时,我使用了一个文本文件,并在我需要访问它时flock()编辑它。这不会扩展,但我仍然觉得在Web 2.0中完全忽略了非数据库解决方案。

有没有人不使用SQL数据库进行存储?有哪些替代方案?

php sql cgi lamp
15个回答
33
投票

有很多选择。但是,如果SQLite能够为您提供SQL功能,而且不需要基于文件的存储,那么就无需寻找这些替代方案。 SQLite足够轻巧,可以用于手机和MP3播放器,所以我不知道它是如何被视为过度杀伤。

因此,除非您的应用程序需要非常具体的东西,否则不要打扰。大多数替代品更难以使用且性能更低。


1
投票

我使用LINQ to XML作为.NET项目中的数据源。这是一个小型解决方案,并使用缓存来缓解性能问题。我会再次为快速站点做这件事,只需要将数据保存在一个公共场所而不增加服务器要求。


0
投票

取决于您存储的内容以及您需要如何访问它。通常sql提供了很好的报告和手动管理能力。几乎所有东西都需要某种方式来管理存储和报告的内容。


0
投票

在Perl中,我使用DBM或Storable来完成这些任务。更新变量时,DBM将自动更新。


0
投票

从SQL数据库向下一级是ISAM(索引顺序访问方法) - 基本上是表和索引,但没有SQL,表之间没有明确的关系。只要概念基础适合您的设计,它就会很好地扩展。我已经有效地使用了Codebase很长一段时间。

如果您想使用SQL数据库类型的数据,请考虑FileMaker


0
投票

一个简单的答案是,您可以使用任何数据存储格式,从标准定义到数据库(通常涉及协议),甚至是定制的文件格式。

您在IT中做出的每一个选择都有取舍,当然网站也不例外。在2000年初,基于文件的论坛系统很受欢迎,因为它允许任何技术能力有限的人编辑页面和帖子。完全静态的站点迅速变得难以管理,内容不会受益于站点用户界面的升级;但是如果编码正确的网站可以简单地移动到子目录,或者被翻录到新设计中。 CMS和动态系统带来了他们自己的一系列问题,即它们之间还没有广泛采用的数据存储标准;他们经常依赖第三方插件来提供设计风格之间的功能(尽管他们的文档主张分离功能和形式)。

在2016年,不使用标准存储机制(例如* SQL RDBMS)是非常罕见的。虽然像Jekyll这样的静态站点生成器(为很多GitHub页面提供动力);而像10月CMS这样的独立玩家仍然提供基于静态文件的存储。

我个人的偏好是使用* SQL启用的RDBMS,它提供了至少在供应商级别标准化的语法,熟悉且强大的语法,但不像很多人我不认为这是唯一的方法,并且大多数情况下会提倡使用站点生成器将不必动态的部件保存到静态存储中,因为这是在网络上生存的最便宜的方式。

TLDR;这取决于你,SQL和RDBMS支持很受欢迎。


-4
投票

如果我是你,我会查看XML。请参阅左侧的w3schools XML教程部分。没有使用SQL数据库的可能性很多。


12
投票

SQLite就是为此而发明的。

它只是一个包含完整SQL数据库的平面文件。您可以查询,更新,插入,删除,安装中几乎没有开销,您只需要驱动程序(PHP标配)

SQLite是一个软件库,它实现了一个独立的,无服务器,零配置的事务SQL数据库引擎。

有人说这个已经有点奇怪了吗?


9
投票

CouchDB(http://couchdb.apache.org/index.html)是一个非sql数据库,现在似乎是一个受欢迎的项目,以及谷歌的bigtable,或者GT.M(http://sourceforge.net/projects/fis-gtm),它一直存在。

对象数据库也比比皆是; dbforobjects(http://www.db4o.com/),ZODB(http://www.zope.org/Products/StandaloneZODB),仅举几例。

对于某些用例而言,所有这些都被认为比传统的SQL数据库更快更简单,但没有一种方法能够实现平面文件的简单性。


6
投票

google bigtablehadoop这样的分布式哈希表是一个简单且可扩展的非SQL数据库,通常比SQL数据库更适合网站。 SQL非常适合复杂的关系数据,但大多数网站都没有此要求。大多数网站以几种形式存储和检索数据,而不需要对数据运行复杂的操作。

看看其中一个解决方案,因为它们将提供您需要的所有并发访问,但不会订阅传统的数据规范化概念。可以认为它们与一堆命名的文本文件非常类似。


4
投票

这可能取决于您的网站的动态程度。我使用过wiki软件,使用RCS签入和签出文本文件。我不推荐那些能够获得与StackOverflow或Wikipedia一样多的更新的解决方案。关于数据库的事情是它们可以很好地扩展,并且数据库引擎编写者已经找到了同时访问,负载平衡,复制等所有细节方面的所有细节。


4
投票

我会说它不依赖于您是否存储更少或更多的信息,这取决于您请求存储数据的频率。数据管理员在缓存查询方面非常出色,因此他们通常是性能更好的选择。但是,如果您不需要动态网页并且只是加载静态数据 - 也许文本文件是更好的选择。数据存储在哪种格式(即XML,JSON,key = pair)并不重要 - 它的I / O操作性能很重。

当我开发Web应用程序时,我总是使用RDBMS作为主要数据持有者。如果Web应用程序不需要在每个请求中提供动态数据,我只需应用一个缓存功能,将数据存储在缓存文件中,当没有新数据添加到主数据源(RDBMS)时,该缓存文件会被请求。


4
投票

我不会根据我想要存储多少数据来选择是否使用SQL数据库 - 我会根据我想要存储的数据类型以及如何使用它来选择。

Wikipeadia将数据库定义为:数据库是存储在计算机系统中的记录或数据的结构化集合。我认为您的答案就在于:如果您想存储客户帐户,访问权限等记录,那么诸如mySQL或SQLite之类的数据库或任何不过分的数据库。它们为您提供了一种可靠且可靠的机制来管理这些记录。

另一方面,如果您的网站存储并提供不变的基于文件的内容,如PDF,报告,mp3等,那么只需将它们存储在磁盘上定义明确的目录布局就足够了。我还会在这里包含XML文档:例如,如果你有一个生产部门为XML格式的网站创建文章,则不需要将它们放在数据库中 - 将它们存储在磁盘上并使用XSLT来传递它们。

您对SQL的选择与否也取决于您希望如何检索要存储的内容。 SQL显然适用于根据搜索条件检索许多记录,而目录树,XML数据库,RDF数据库等更有可能用于检索单个记录。

在尝试扩展高流量站点时,选择存储机制非常重要,并且将所有内容填充到SQL DB中将很快成为瓶颈。


2
投票

这取决于你存储的内容。我的博客使用Blosxom(用Perl编写,但可以为PHP做类似的事情),其中每个单独的条目都是一个单独的文本文件。第一行是纯文本(标题),其余是不受限制的HTML。遵循一些简单的规则,这些规则将形成一个简单但有效的博客框架。

它确实有缺点,但它也意味着每个帖子都是一个离散文件,适用于在本地计算机上更新然后发布到远程Web服务器。这在有效的查询方面是有限的,因此如果您想要细粒度控制和基于Web的数据交互,那么肯定不是一个好的选择。


1
投票

检查CouchDB

© www.soinside.com 2019 - 2024. All rights reserved.