2008-09-23 47 views
4

我们都有我们最喜欢的数据库。如果你客观地看待你选择的数据库,它有什么缺点,有什么可以改进的?<你最喜欢的数据库>最大的缺点是什么?

的规则:

  • 一个与每缺点回复;
  • 该限制的简短描述,其次是;
  • 更详细的描述,如何做得更好的解释或另一种没有相同限制的技术的例子。

  • 不要遗漏任何你没有广泛使用的数据库。在其他技术上很容易引起猜忌,但我们希望从你的经验中学习,而不是偏见。

回答

5

Oracle数据库是

甲骨文做的事情做得很好,但许可费用是可怕相当昂贵。 Oracle XE的发布改善了这一点,但是这样做的局限性意味着它对您的解决方案产生了限制。

0

PostgreSQL没有一个好的故障转移解决方案,但我知道他们正在处理它。

+1

SLONY很好的填补了这个空缺。 – user11318 2008-09-23 16:12:06

1

数据库的Microsoft SQL Server

缺陷巨额的许可费用

说明

SQL服务器具有强大的功能,它很好地集成.NET开发。问题是,当您必须从共享数据库扩展到专用数据库时,许可成本非常高。实际上,这导致数据库应该真正运行在专用服务器上,托管在具有性能和安全问题的共享服务器上。

这不会发生在MySQL或PostgreSQL上。不支持存储过程:

0

数据库:SQL精简版

缺点

无论这个限制如何,这个数据库都有其'特别用作客户端缓存的应用程序,可以是智能客户端或分布到移动平台。

1

数据库的Microsoft SQL Server 2005

缺陷妥善执行UI

说明

SQL Server Management Studio中不提供出色的用户体验:

  • 标签兵的行为是奇怪:你一直在寻找合适的标签
  • 保持对64位版本的崩溃
  • 失踪的前版本的一些功能,如存储过程

补助概述这不与2000年版

+1

我从来没有使用过SQL Server 2005,但肯定它们不能比用于SQL Server 2000的企业管理器造成更糟的UI?那将会令人印象深刻。 – 2008-09-29 12:46:49

+1

:)不幸的是它很伤心,但是真的...... 64位版本每2分钟崩溃...... 32位版本是...... awkard ......并且他们没有添加最重要的东西:intellisense。 :( – Sklivvz 2008-09-29 13:09:36

+0

我实际上并不认为UI是DBMS的一部分,但后来我习惯于使用DB2 for z/OS,其中UI通常是ISPF(80x24绿色屏幕,基于文本的菜单等) – paxdiablo 2008-10-04 02:10:20

1

数据库MySQL的

缺陷外键发生在一些典型的表仅支持ES

说明

够说。它有明显的维护影响。

MySQL manual

外键的定义是受以下条件:

  • 两个表必须是InnoDB表,他们不能是临时表。

而且here

对于比其他的InnoDB存储引擎,MySQL服务器解析的外键语法在CREATE TABLE语句,但不使用或存放它。

这不会发生在任何其他主要数据库中。

+1

你为什么不把InnoDB用于一切?95%的时间是正确的选择,不好的地方是你需要最大的插入速度,在这种情况下,你可能不希望被外来速度放缓关键检查 – 2008-09-29 12:40:27

+0

一个非常简单的原因:您无法控制的遗留表格 – Sklivvz 2008-09-29 13:08:05

0

数据库甲骨文

缺陷有关包

描述补助粒度

只能授予对包装内的存储过程的权限的包,而不是。或者,您可以授予单个存储过程的权限,但是您可以将它们放在包之外。这要求你知道谁将使用哪个存储过程,并且它很难重构。

SQL Server不会发生这种情况。

2

数据库的Microsoft SQL Server 2005

缺陷缺乏 “插入或更新”

说明

您经常需要插入或更新表中的记录,取决于记录是否存在。没有进行原子操作会导致不必要的事务。

这不使用MySQL或SQLServer的2008

1

数据库MySQL的
缺陷发生服务器将启动受损的表
说明

如果MySQL有一个被破坏的表 - 无论是在写入过程中还是其他故障中死亡 - 它都会很高兴地启动并允许用户继续进行,就好像问题不存在一样。当然,它会在日志中产生一些错误信息,但从我的经验来看,当你试图弄清楚为什么应用程序行为异常时,这并没有帮助。

大多数其他数据库将在启动时检测并修复错误,或者只是拒绝以任何形式的损坏开始。你需要

0

数据库的Microsoft SQL Server 2005

缺陷缺乏的数组类型参数

说明

有用的搜索,有很多次,通过一系列的值与之匹配。在SQL 2005中,您可以通过在SQLServer中使用CLR来实现解决方法。考虑到实用性,开箱即可使用此功能会更有意义。

SQL Server 2008或Oracle不会发生这种情况。

1

数据库MySQL的 5.0.x版本和上述

缺陷环复制错误导致数据不一致的不同节点

说明

在生产中最严重的问题,我们所面临的上现在是在MySQL环中,环本身产生错误并停止复制。

自5.x.x开始建立环(或主 - 主复制)是可能的:您可以将数据库链接在“环”中,以便将数据复制到对方。每个数据库节点都会从所有其他节点获取所有更改。

我们假设错误在于自动增量失败。这也可以从正常复制中得知,但在新版本中,错误日志中没有足够的错误消息。我强烈建议不要在MySQL中使用这个功能,只要这里的问题没有解决。

2

数据库PostgreSQL的

缺陷没有SQL事件探查器

我们询问了开发商在最近的一次会议上,我知道这是现在他们正在寻找实现一些。

0

数据库 Postgres的

缺陷没有分析查询

说明

分析查询,甲骨文推出,是SQL 2003标准的一部分。不幸的是Postgres还没有实现它们。

1

数据库甲骨文

缺陷没有处理长期的数据类型以及时间过长

说明

甲骨文只用了很长的数据类型,直到9i的(我相信),在该点它被弃用,赞成LOB。这里有很多代码,但是它仍然有很长的一段时间,并且还有所有相关的限制。其中最大的一个就是每个表只能有一个长列,而且它必须在列的末尾。请参阅here以了解更详尽的限制条款清单。

2

与其他数据库自动增量相比,我喜欢Oracle中序列的灵活性,但是无法将seq.nextval设置为pk列的默认值,这有点令人讨厌,而且必须解决微不足道的问题。

1

数据库甲骨文

问题临时表的定义并非私人

说明许多数据库(例如Postgres的和Sybase),让您即时创建临时表,插入其中,如果需要添加索引,然后从它们进行查询。 Oracle具有临时表,但临时表定义存在于全局名称空间中。因此,临时表必须由DBA创建,您需要在它们使用的表定义和代码之间进行同步,并且如果两段代码需要相似(但不完全相同)的表定义,则它们需要使用不同的名称。这些差异使临时表对开发人员来说不太方便。

是的,我明白查询优化器具有全局定义的好处。然而,对我来说,缺乏便利性使Oracle的临时表对我来说几乎没有用,而我在Postgres中非常密集地使用它们。

0

数据库:PostgreSQL的

**问题:**是C#该连接器例如是不是真的了最新和崩溃拥有先进的功能。

1

数据库:Oracle

问题:表,过程,列等的名称不能超过30个字符。这真令人气愤。

问题:它符合JDBC规范。例如,存储过程不会以符合JDBC的方式返回结果集,而不是返回专有的OUT参数类型。这意味着您不能使用更高级别的JDBC抽象。

0

数据库:所有

缺点 - 设计由谁也不会想到要知道,当你设计一个datbase你在做什么是非常重要的人差。所有数据库中由坏设计导致的问题远远多于任何缺失的功能。所以我想他们都错过了“阅读我的想法并找出最佳解决方案,而不需要我去思考”功能。

0

任何SQL数据库管理系统

缺陷:重复行

一个关系模型的优点之一是它代表一切,而不需要重复的元组,使用的关系,其中有钥匙和无重复,即。不幸的是,SQL不是那样构建的。这使得数据库开发人员的生活毫无困难。 SQL开发人员必须处理没有密钥的表,并调试返回重复行的查询。

相关问题