存储 Web 应用程序数据时是否有可遵循的一般经验法则来了解应使用哪个数据库后端?选择时应该考虑每天的点击数、数据行数还是其他指标?

我最初的想法是,这个顺序看起来像下面这样(但不一定,这就是我问这个问题的原因)。

  1. 平面文件
  2. 商业银行
  3. SQLite
  4. MySQL
  5. PostgreSQL
  6. SQL服务器
  7. 甲骨文
有帮助吗?

解决方案

这并不那么容易。唯一的一般经验法则是,当当前的解决方案无法跟上时,您应该寻找另一种解决方案。这可能包括使用不同的软件(不一定按照任何全球固定的顺序)、硬件或架构。

您可能会从使用类似的东西缓存数据中获得更多好处 内存缓存 而不是切换到另一个随机存储后端。

其他提示

如果您认为您将需要重量级产品之一(SqlServer、Oracle),那么您应该从其中之一开始。数据迁移极其困难。从长远来看,从顶部开始并留在那里会花费更少的钱。

我认为你的排名过于具体。对于非常小的数据集,您几乎可以从平面文件等开始,对于稍大的数据集,可以使用 DBM 之类的东西,不需要类似 SQL 的语法,然后再使用某种 SQL 数据库。

但谁愿意全部重写呢?如果应用程序将受益于对联接、存储过程、触发器、外键验证等的访问,则只需使用 SQL 数据库即可,无论数据集大小如何。

哪一个 应该更多地取决于客户现有的安装以及可用的 DBA 技能,而不是您所持有的数据量。

换句话说,数据库的大小远不是唯一的考虑因素,而且可能不是最重要的因素。

对此没有统一的答案,但几乎总是使用平面文件不是一个好主意。你必须解析它们(我想)并且它们不能很好地扩展。从合适的数据库开始,比如 Oracle 或 SQL Server(或者 MySQL、Postgres,如果您正在寻找免费选项)是一个好主意。只需很少的开销,您就可以在以后节省大量的精力和头痛。它们还允许您以非愚蠢的方式构建数据,让您可以自由地思考将如何处理数据,而不是如何输入/输出数据。

这实际上取决于您的数据以及您打算如何使用它。在我以前的职位之一,我们使用 Postgres,因为它存在本地地理位置和时区扩展,因为它允许我们使用多边形数据类型管理数据。对于我们来说,我们需要这样做,而且我们还想使用存储过程、视图等。

现在,我工作的另一个地方使用MySQL只是因为数据被标准化,标准的逐行数据。

SQL Server 长期以来一直有 4GB 数据库限制(请参阅 SQL Server 2000),但尽管有此限制,它对于清除旧数据的中小型应用程序来说仍然是一个非常稳定的平台。

现在,通过使用 Oracle 和 SQL Server 05/08,我只能告诉您,如果您想要最佳的稳定性、可扩展性和灵活性,那么这两个是您的最佳选择。对于企业应用程序,我强烈推荐它们(仅仅因为这就是我们现在工作的地方使用的)。

其他需要考虑的事项:

  • 语言集成(ASP.NET会话存储、角色管理等)
  • 查询类型(选择、更新、删除)[虽然这更多的是模式设计问题,而不是 DBMS 问题)
  • 数据存储要求

您的应用程序对数据库的利用率是最关键的。主要是最常使用哪些查询(SELECT、INSERT 或 UPDATE)?

假设您使用 SQLite,它是小型应用程序的齿轮,但对于“Web”应用程序,您可能会使用更大的齿轮,例如 MySQL 或 SQL Server。

编写脚本的方式和 Web 应用程序平台也很重要。如果您在 Microsoft 平台上进行开发,那么 SQL Server 是更好的选择。

通常,我会采用我所使用的框架普遍接受的内容。因此,如果我正在使用 .NET => SQL Server,Python(通过 Django 或 Pylons)=> MySQL 或 SQLite。

不过我几乎从不使用平面文件。

选择 RDBMS 解决方案不仅仅是“后端马力”。例如,拥有承诺控制的能力,以便您可以回滚失败的事务就是其中之一。原因。

除非您使用的是大型交易率应用程序,否则大多数数据库引擎就足够了 - 因此,问题就变成了您愿意为该软件支付多少费用,它是否在您想要的硬件和操作系统环境上运行,以及您拥有哪些专业知识管理该软件。

这种进展听起来很痛苦。如果您打算在任何地方包含 MS 产品(尤其是付费 SQL Server),您也可以使用整个堆栈,因为您只需为最后一个产品付费:

SQL Server Compact -> SQL Server Express -> SQL Server Enterprise (clustered).  

如果您最初将应用程序定位为 SQL Server Compact,则保证您的所有 SQL 代码无需修改即可扩展到下一版本。如果您的规模超过了 SQL Server Enterprise,那么恭喜您。这就是他们所说的 好的 问题有。

还:返回并查看 SO 播客。我相信他们简短地讨论过这个问题。

这个问题实际上取决于你的情况。

如果您可以控制要部署到的服务器,并且可以安装所需的任何服务,那么安装 MySql 或 MSSQL Express 服务器以及针对现有数据库框架进行编码与针对平面文件结构进行编码的时间是不值得的的考虑。

火鸟呢?那该放在那个列表中的什么位置呢?

并且不要忘记您的解决方案的“客户”也必须满足的要求。如果您为小公司编写商业应用程序,那么 Oracle 可能不是一个好的选择......但是,如果您为大型企业编写定制解决方案,该企业必须在多个园区之间共享数据,并且拥有规模较大的 IT 部门,那么选择 Oracle 还是 Sql Server 的决定将取决于客户最有可能已经部署的内容。

如今的数据迁移并没有那么糟糕,因为我们拥有 Embarcadero 提供的出色工具,因此我宁愿让客户需求来推动决策。

如果您可以选择,SQL Server 从一开始就是一个不错的选择,主要是因为您可以访问可靠的过程和功能,并且数据库备份工具完全可靠。将尽可能多的逻辑包装在数据库本身内部(而不是使用您使用的任何语言)有助于安全性和性能 - 事实上,始终使用插入/更新逻辑的过程是有道理的,因为这些使您可以不受注入攻击。

如果可以选择的话,我唯一会优先考虑使用 MySQL 的时候是使用一个大型的、相当简单的、主要用于读取访问的数据库。这并不是要谴责 MySQL,它最近有了显着的改进,如果我没有选择,我很乐意使用它,但对于具有更新/插入活动的更复杂的系统,MSSQL 通常是更好的选择。

我认为你的清单是主观的,但我会玩你的游戏。

平面文件

商业银行

SQLite

MySQL

PostgreSQL

SQL服务器

甲骨文

泰拉数据

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top