2010-08-13 130 views
2

您好我正在C++中制作A​​TM控制台应用程序。我打算使用数据库,我的朋友建议使用文件。但是,我想使用像mySql,Oracle或sqlServer express这样的数据库。C++和java应用程序的最佳数据库

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

我也在java中制作第二个应用程序。这是一个由数百个记录组成的大型图书馆系统。我想知道我可以使用这个应用程序的数据库。是Oracle,mysql还是sqlserver express。我也听说过JDBC。它有什么好处?

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

非常感谢

+0

鉴于您最大的担心是在数百个记录的范围内,我建议您看看sqlite或firebird。 – 2010-08-13 05:15:00

+0

引用SQLite – jscharf 2010-08-13 05:47:29

回答

2

JDBC是一个Java程序将如何与数据库进行交互。

Oracle和SQL Server Express的大致看齐,功能明智:

  • 语法(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 Express仅限于5?我相信Oracle Express仅限于5 GB。

0

但是,我想使用一个数据库,如 mySql,Oracle或sqlServer express。

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

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

应用程序的类型应该确定要使用的数据库而不是技术(在你的情况下是C++)。明智地选择一个数据库。听取专家意见并根据您的应用程序的性质确定数据库。有很多博客/文章像this.

我也听说过JDBC。它有什么 好?

是的,当您为您的应用程序使用Java。

问:哪些数据库之一将是 更适用于大型的Java应用 ?

同样,应用程序的性质决定了DB的使用。

4

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

优点:

  • 很轻
  • 不需要有什么外部程序
  • 专卖店在单一文件,它可以到处移动数据。

缺点:

  • 没有那么好,如果多件事情需要同时访问同一个数据库
  • 不支持SQL
  • 的所有

sqlite的支持成千上万,可能]的记录很好。我只有一个问题,那就是当我试图导入5 GB的地形数据时,我使用的程序试图在内存中完成这一切(不出意外,它以交换为结果,而我只是自锁定后必须杀死它)。 mySQL成功了,尽管整晚都要进行导入)。

对于JDBC来说,这只是你碰巧使用的java接口。它可以让你很容易地切换你使用的数据库后端,因为一切都从底层数据库抽象出来。

0

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

对于Java应用程序,您可以使用JDBC或JPA/Hibernate,它们的座右铭是使DBMS透明,您只需编码并且不关心下面的DBMS。

0

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

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

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

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

“更大”的数据库擅长支持许多并发进程,经常试图更新相同的数据 - 多年来Oracle的一大卖点之一是'读者'从未被'作家'封锁,并且“读者”总是会获得一致的数据视图(即读者永远不会获得部分更新)。 SQL Server和Postgres都支持相同的。

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

相关问题