我负责决定在一个大型政府项目中使用哪个数据库:
- 1亿条记录(估计在一张大表中)
- 可用性和数据可靠性至关重要。
- 性能并不像可用性和可靠性那么重要。
- 桌子结构比较扁平,大约有 20-30 张桌子。
- SQL 查询或多或少简单易懂,没有复杂的连接。
- 降低成本是一个重要因素。
- 用户数量在 100-200 范围内(同时)。
- 必须在集群(2 台服务器)或服务器冗余(两个设备放在一个盒子里)之间进行选择
- 所有服务器将配备 RAID/SAS 硬盘和多核双 CPU
- 可以根据 RDBMS 选择聘请合适的 DB 管理员
mySQL 是否足够成熟来处理这种配置?
请帮忙。
答案1
您可能在许可方面有“现有技术”,这可以让您的决定更清晰一些。例如,我有许多政府客户拥有 ORACLE 的企业级许可,因此除了硬件考虑之外,建立新服务器不是问题。请与您的客户核实现有的企业解决方案。
如果这是一个通用解决方案,那么您可能需要考虑任何映射层解决方案集,这些解决方案集将允许您在后端部署上具有灵活性,例如根据需要使用 ODBC、JDBC 或 JMS 从下一个下游层连接到数据库,连接设置来自配置文件。这样您就可以避免一定程度的锁定。当然,如果此解决方案是针对单个客户的,并且您从未打算向其他任何人销售,那么您可以避免此类架构考虑……除非他们内部有多个数据库供应商,并且他们希望能够灵活地在任何后端执行。
答案2
我认为上述所有数据库都足够成熟。如果您的场景如此简单,我会根据您计划使用的开发平台选择合适的系统。
例如,在 .NET 中开发时,MS SQL Server 2008 为您提供了许多不错的集成功能,并且集成此数据库比集成 MySQL 等数据库要容易得多。Oracle 是一个通用选择,但价格要高得多。在 Windows 服务器上,我更喜欢 MS SQL 2008,在 Linux 上更喜欢 MySQL 或 Oracle。但我知道所有系统都在这两个平台上实现。
所有这些系统都同样可靠,并被用于许多 24/7 应用程序中(MySQL 也不例外)。
答案3
一个重要的决定因素是您内部拥有哪些数据库管理和开发经验?如果您目前只经营 Oracle,并且必须聘请 MySQL DBA 来管理 MySQL 数据库,那么从长远来看,这将比购买新的 Oracle 许可证花费更多。
“100 兆记录(估计)”是什么意思?应该是 1 亿条吗?只要您为服务器提供足够的 CPU 和内存来处理工作负载,列出的所有三个都可以处理大量数据。
需要弄清楚的一件事是数据库的 RPO 和 RTO。这将帮助您设计所需的解决方案。
答案4
您的要求很模糊,但我会选择在 x64(12 核、48 GB RAM)Red Hat Linux 上运行 MySQL Enterprise Edition,以主/从冗余模式运行。
您需要一般性建议,这是一个功能强大且价格低廉的系统。2 台服务器每台售价 10K,软件一年支持费用约为每台 7K(5K MySQL EE,2K RHEL)。现在 Oracle 已在 MySQL 上为您提供支持。您还可以以相同的价格换用 Oracle Enterprise Linux。
您所说的一切都表明您不需要更多。主/从 MySQL 是一种众所周知的配置,比集群容易得多,并且主服务器发生硬件故障后 15 分钟内即可恢复。就像 Bart 所说的那样,地理隔离确实很有帮助,您通常无法在集群上做到这一点,但您可以使用 MySQL 复制来实现。