对于什么类型的要求,你会选择Apache Derby(或Java DB)而不是MySQL(反之亦然)?我环顾四周,人们只是比较两者,但没有人谈论何时考虑每一个.我正在使用Glassfish + Java/Restlet + MySQL开发基于Web的应用程序.
我希望这个系统有大约100-200个用户,在给定时间内大约有30-50个并发用户负载 - 主要是.
如果我想让网络应用程序可下载/可分发,我被告知要查看Derby.但这是我使用它的唯一原因吗?它适用于网络应用程序吗?有人用过吗?您的经验是什么,何时选择其中一个?(大多数关于比较的讨论都早于MySQL v5,因为它不支持存储过程,触发器等,但现在不再是这种情况).
我可以理解一个独立的数据库服务器模型,其中Web服务器发送请求,但是这个模型如何随嵌入式数据库而改变?或者是否默认在网络配置中使用Derby?
Luk*_*der 18
为什么Derby和MySQL是您考虑的唯一RDMBS?如果你说Derby,你应该查看HSQLDB,H2,SQLite.如果你说MySQL,你也应该查看Postgres(它有更多的功能).
这只是为了命名一些免费的RDBMS.当然,正如查理已经说过的那样,还有很多其他原因和很多理由可以选择.查看维基百科上的这个(IMO优秀)比较页面,您将在其中找到任何RDBMS的优点和局限性:
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
至于您对Web应用程序"可下载"的要求,当然您可以在Web应用程序中嵌入RDBMS(任何Derby,H2,HSQLDB).但您也可以将MySQL或Postgres或任何集成配置为可配置,并为您的下载程序提供有关如何自行设置Web应用程序的说明.毕竟,当您使用DataSource为您的webapp 配置容器时,可以轻松完成此配置.
现在,即使您认为使用嵌入式数据库开发Web应用程序可能更容易,您也应该始终考虑领先一步.问题如下:
由于您的评论表明您的数据随着时间的推移而不断增加,并且它应该持续存在,我不会选择嵌入式版本,而是将数据与应用程序分开.请注意,这不会从您的应用程序设计中排除Derby.这只是意味着您必须将Derby作为独立服务器运行.
将产生差异的要求是所谓的"非功能"要求:容量,可靠性,吞吐量(和响应时间),可用性和安全性; 这与软件自身的问题一起,例如它是否容易获得,基于它维护软件有多难,等等.
Oracle速度非常快,非常强大,支持得非常好,并且非常昂贵.
MySQL是一个很好的一般选择,广泛使用.它可以配置为高可用性和可靠性(通过镜像和主从),它被很多程序员很好地理解,并且很好地集成到许多平台软件中,如Grails,Rails和JBoss.
Derby很好,因为它非常独立于平台,很多人很容易阅读Java.
SQLite快速,轻量级,在Mac上或多或少都是原生的.
... 等等.
首先,弄清楚哪些非功能需求很重要,然后选择一个DBMS.
更新
好的,跟进你的评论.
有了这些数字,让我先问一下为什么要单独使用RDBMS?这是1000行 - 考虑将它们存储在内存中,比如在序列化的集合集合中.
如果你真的需要一个DB,说因为你使用Rails,那么你就没有任何挑战RDBMS -这可能是很难选择,因为你在一个领域是所有的选择是非常好的.如果是这样,那么选择最容易使用且最容易支持的那个,这可能是但不一定是MySQL,只是因为每个人都使用它.