[英]Which database should I use for home project use?
我查看了两个或三个不同标题的所有“相关问题”并没有看到任何内容,所以这里有。
我最近在工作中使用过SQL Server和Oracle。 我想在家里玩,主要是使用Java,也许使用Ruby on Rails或Python。 我正在运行Windows 7.我通常会制作Web应用程序,最终可能希望远程托管这个应用程序,除此之外,没有特定的要求。
在这种情况下,我对进一步学习SQL的细节并不感兴趣; 我可能会使用ORM来抽象出来,这样它就会自动与方言无关。 我也将与一些非关系数据存储一起工作,但我在那里考虑了具体问题。
我应该考虑哪些数据库?
SQLite是一个非常好的选择。 它只是一个文件,速度很快。 没有配置,事务是原子的,支持TB级数据库。 有Ada,C#,Lisp,Fortran,Java,Lua,PHP,Perl,Python,Ruby,Tcl等语言绑定...
它有很好的GUI管理选项:
它用于工业:
我很高兴使用SQLite3-- Python界面非常简单,整个数据库只是一个文件!
PostgreSQL是一个优秀的开源数据库,可以与Java,Python,Ruby,.NET等一起使用。
您可以轻松找到PostgreSQL与MySQL的大量比较。 我已经习惯了并喜欢这两个。
我在家里使用2种不同的基于开源的数据库引擎:
当您来自Oracle和SQL Server的背景时,我肯定会建议使用PostgreSQL路由,它在Windows上运行本地(作为服务,很像MSSQL / Oracle)以及* NIX系统。 它还有一个相当不错的跨平台GUI,名为pgAdmin 。 此外,从PostgreSQL的8.3版本开始,它与MySQL的性能相当,它不像旧的7.x版本那么慢。
我向具有更多Oracle / MSSQL经验(而不是MySQL)的人推荐PostgreSQL的最大原因是SQL语法和数据库引擎的一般感觉非常接近。 事实上,PostgreSQL在处理数据库锁定和同时读取方面与Oracle非常相似。
如果您已经熟悉Oracle,那么Oracle Express Edition的安装要比完整的怪物大得多。
这取决于你的要求。
首先尝试:如果你需要一个快速的嵌入式数据库,并且没有那么多的数据(没有聚类,没有分发),我会采取H2。 这个数据库很快,可以与hibernate / orm一起使用,如果你想使用这个数据库的特殊功能(很容易通过带有函数的java开发人员扩展...)
第二次尝试:你没有那么多关系数据,想要使用不同类型的对象图。 你想要快速和完全可嵌入的解决方案,比我在面向对象的内存样式中使用db4o或其他数据库。 (没有orm)
第三次尝试:如果你想存储更多的数据(表中数百万条目),但没有集群,复制,分发,比我会使用mysql。 很快,很好用。 我发现,postgres在我的expirience中比mysql慢。 mysql非常适合直接在java和hibernate和co中使用。 也。
第四次尝试:如果你有更多的数据...哦对不起,我忘了你已经问过一个家庭解决方案:)
在上述推荐中,我仅使用免费或开源产品进行非商业用途。
关于图形工具:你可以找到很多不同的数据库,但也可以找到独立于数据库的解决方案......
玩得开心!
如果您从工作中了解SQL Server,为什么不使用绝对免费的SQL Server Express ?
还有一堆工具,即SQL Server Management Studio Express等。 它甚至支持全文搜索等高级功能。
鉴于你说你将主要使用Java,我还会考虑将HSQLDB作为SQLite的替代品。
我会选择MySQL。 就GUI而言,我过去常常使用EMS SQL Manager来获取MySQL免费软件,而且它很好...... http://sqlmanager.net/products/mysql/manager
去寻找MySQL。 很多人都在使用它,并且它一直在变得越来越好。
然后去Sqlite,也许你想把这些东西轻松地分发给你的朋友:)
我建议设置一个WAMP服务器 - 它模拟Windows上的LAMP环境,并附带您自己的MySql / PhpMyAdmin接口,使MySql易于使用。
如果没别的话,我会为社区推出MySQL并付出代价。
“MySQL似乎是轻松托管的方式,可能是整体赢家。这就是希望GUI还不是很糟糕。”
呃,什么GUI? 您可以使用许多第三方应用程序之一来做简单的CRUD内容... phpMyAdmin,Navicat等。
既然你的意图有点模糊(你想在此开发然后在托管环境中运行吗?) - 我会考虑可移植性和一般功能。
鉴于我推荐postgresql。 它的sql比mysql更符合ansi - 所以后来使用oracle,sql server,sqlite等应该非常简单。 当然,你可以(并且如果可行的话)使用ORM - 但是你仍然要处理报告的数据库语法或非常复杂的sql。
SQLite也非常兼容。 但它缺少一些关键功能,其无类型会影响您的可移植性。 否则,很棒的数据库。
Oracle Express可以很容易地使用 - 但正如您所指出的,在生产中托管通常非常昂贵。 SQL Server也很适合使用 - 但在生产中也非常昂贵。 它还有一种窗口式的方式,我发现过程自动化比使用面向unix的数据库通常做的更尴尬。 注意,您也可以使用DB2 Express - 它可以免费使用2个CPU,4 GB内存和所需数据。 所有这些都非常适合商业环境,但你不会在便宜的托管网站的菜单上找到任何。
MySQL当然是另一种选择。 这是一个自由市场的领导者。 但是,如果数据质量很重要,那么可移植性问题是一种痛苦,而且繁琐和安静的错误会导致额外的开发工作。 然后是许可的复杂性和未来的不确定性。 在2002年我肯定会说MySQL,但在2009年我会说大部分时间都是Postgresql。
您也可以尝试Firebird。
它易于部署和嵌入,占用空间非常小(在某些情况下少于5 Mb)并且内存消耗非常低。
并且,如果它真的不是全部,它就没有管理。 这是一个非常有趣的选择。
为什么家里的甲骨文会让你不寒而栗。 它在一台相当小的笔记本电脑上工作正常,并且有一个免费版本可以用于非商业用途(数据库大小有限,就像sql server express一样)。 也就是说,Windows上的mysql可能会使用更少的资源。 至于用户界面,他们都是同样糟糕的。 但是可以使用第三方工具。
这取决于您正在开发的应用程序需要什么。 它是一个可以在另一台机器上运行的Web应用程序,还是一个最适合嵌入式数据库的桌面应用程序?
也就是说,MySql不会出错,它可以满足您的大多数需求。
“上次我使用它时,MySQL有一个非常平庸的用户界面”
这是选择数据库的限制吗? 有很多很好的GUI(如果你是GUI人)
您可以使用PhpMyAdmin或MySQL查询浏览器。 我会说MySQL更好,但是如果你的应用程序不涉及很多写操作(因为它是一个家庭项目),你可以考虑使用SQLite。
例如,如果你需要一个练习网络应用程序的数据库,我是sqlite的忠实粉丝,它适用于PHP等,它是一个嵌入式数据库,所以没有数据库管理员可以说。 SQL方言虽然与其他方言略有不同,但还不足以成为一个显示阻止者。
它也是非常快的“公共域”许可证,所以你也可以在商业应用程序中使用它。
如果你在工作中使用SQL Server和oracle,那么我会选择其中一个。 事实上,为什么不去两个? 安装两者的快速版(假设它们将共存)并了解每个版本的优缺点听起来是一种有价值的方法。
您甚至可以尝试开发数据库独立性以及自己使用每个语法和特定功能。 对我来说听起来很有教育意义。
MySQL和GUI使用DBVis ,它是免费的,兼容大量的数据库,如MSSQL,Oracle等...
我仍然认为Oracle可能有用。 从桌面上的XE开始,轻松迁移到Web,或者从公开托管的Apex开始。 APEX GUI易于学习,直观且功能强大。 您可以像在Access中创建表单一样轻松地创建网页。 在我看来,它可以自由地用于可能发展到非常大的项目的小型项目 - 因此是繁重的基础设施。 但正如我所提到的,如果您使用他们的托管应用程序,则您自己的计算机上没有资源问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.