【问题标题】:The best database for a C++ and java applications [closed]C ++和Java应用程序的最佳数据库[关闭]
【发布时间】:2011-03-29 06:48:18
【问题描述】:

您好,我正在用 C++ 制作一个 ATM 控制台应用程序。我打算使用数据库,我的朋友建议使用文件。但是,我想使用 mySql、Oracle 或 sqlServer express 之类的数据库。

问:哪一个数据库更适用于 C++ 应用程序?

我还在 java 中制作了第二个应用程序。这是一个包含数百条记录的大型图书馆系统。我也想知道我可以为这个应用程序使用哪个数据库。是Oracle,mysql还是sqlserver express。我还听说过 JDBC。好用吗?

问:哪一个数据库更适用于大型 java 应用程序?

非常感谢

【问题讨论】:

  • 考虑到你最担心的是数百条记录,我建议你看一下sqlite或firebird。

标签: java c++ mysql sql-server oracle


【解决方案1】:

我猜这些是作业,而不是商业应用?? 在这种情况下,我建议坚持使用简单的东西(sqllite 或 mysql)。

我会说,对于 ATM 应用程序,交易完整性至关重要,我认为最好使用您信任的系统来正确实施,而不是尝试自行开发。

至于哪个数据库 - 客户端语言几乎无关 - 您可以使用大多数语言访问它们中的任何一个。在 C++ 中,您可以以与 JDBC for Java 类似的方式使用 ODBC(将您的程序从底层技术中抽象出来)。

mySQL 确实实现了事务(默认情况下不是 - 或者它已更改??)。一些语言框架通过在任何 d/b 更新后自动提交来“中断”事务。

“更大”数据库的优势在于支持许多并发进程,通常会尝试更新相同的数据 - Oracle 多年来的一大卖点是“读者”永远不会被“作者”阻挡,而且“读者”将始终获得一致的数据视图(即读者永远不会获得部分更新)。 SQL Server 和 postgres 都支持相同的。

如果您只是在做一个单用户/单线程演示系统,那么您可能不需要使用任何更大的东西。

【讨论】:

    【解决方案2】:
    【解决方案3】:

    任何现代 DBMS 都可以满足您的需求。

    对于Java应用程序,你可以使用JDBC或JPA/Hibernate,它们的宗旨是让DBMS透明化,你只需要编码而不关心下面的DBMS。

    【讨论】:

      【解决方案4】:

      我不知道该应用程序是什么,但我真诚地建议您使用 sqlite,除非您真的需要关系数据库的一些核心功能。如果是朋友推荐的应用程序,我猜你不会。

      优点:

      • 很轻
      • 不需要程序外部的东西
      • 将数据存储在可以移动的单个文件中。

      缺点:

      • 如果多个事物需要同时访问同一个数据库,那就不好了
      • 不支持所有的SQL

      sqlite 可以很好地支持成百上千的记录。我只有一个问题,那就是当我尝试将 5 GB 的地形数据导入其中时,我使用的程序试图在内存中完成这一切(毫不奇怪,它最终以交换方式结束,我只是因为它被锁住了,所以不得不杀死它)。 mySQL 成功了,尽管导入需要整晚)。

      至于 JDBC,这只是你碰巧使用的 java 接口。它可以让您非常轻松地切换您正在使用的数据库后端,因为所有内容都从底层数据库中抽象出来。

      【讨论】:

        【解决方案5】:

        但是,我想使用类似的数据库 mySql、Oracle 或 sqlServer express。

        您的朋友为什么建议使用文件,而您为什么选择数据库?选择文件或数据库有many topics/posts

        问:哪一个数据库将是 更适用于 C++ 应用程序 ?

        应用程序的类型应该决定要使用的数据库,而不是技术(在你的例子中是 C++)。明智地选择一个数据库。听取专家 cmet 的意见并根据应用程序的性质确定数据库。有很多博客/帖子,例如this.

        我还听说过 JDBC。有没有 好吗?

        是的,当您将 Java 用于您的应用程序时。

        问:哪一个数据库将是 更适用于大型java 申请?

        同样,应用程序的性质决定了要使用的数据库。

        【讨论】:

          【解决方案6】:

          JDBC 是 Java 程序与数据库交互的方式。

          Oracle 和 SQL Server Express 在功能方面大致相当:

          • WITH 语法(CTE,子查询分解)
          • 分析/排名/窗口化功能(ROW_NUMBER、RANK、DENSE_RANK、NTILE)

          SQL Server 2005+ 具有 PIVOT/UNPIVOT - Oracle Express 是 10g IIRC; Oracle 直到 11g 才支持 PIVOT。

          我刚才提到的所有上述内容 - MySQL 不支持。

          哪个数据库更适用于大型 Java 应用程序

          Java 不是 C++,而是定义“大”。 SQL Server 2008 R2 Express 支持高达 10 GB 数据的数据库; 2005快递限5?我相信 Oracle Express 限制为 5 GB。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-08-01
            • 1970-01-01
            • 2011-02-13
            • 2011-01-17
            • 1970-01-01
            • 2010-09-20
            • 2010-12-23
            • 1970-01-01
            相关资源
            最近更新 更多