各种数据库,哪款才是你的菜
获奖详情:http://bbs.chinaunix.net/thread-4235287-1-1.html话题背景:
全世界200多种数据库,在大数据纷飞的今天,nosql和newsql势头很猛,但是排名前十的数据库中关系型还是占了7席,可见关系型数据库的地位依然还是主流的数据库。就得分排名而言,前3位都是得分超过千,第三位是第四位4倍多。针对此类现象,我们就关于数据库的使用问题进行讨论,说说你更青睐那种数据库?哪些带给你使用的快感!
讨论话题
话题1、这10个数据库你用过哪些?在什么场景下用到的?
话题2、选择使用哪种数据库的理由是什么?
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
讨论时间:
2015年11月16日--2015年12月16日
活动奖励:
活动结束后将评选出5名讨论最精彩的同学,奖励技术图书一本。
可在论坛书库任意挑选适合的书籍。书库链接:http://bbs.chinaunix.net/thread-4074217-1-1.html 话题1、这10个数据库你用过哪些?在什么场景下用到的?
MySQL:传统服务器用过
MongoDB:用Node.js帮朋友开发游戏服务器时候用过
PostgreSQL: 开发web的时候用过
SQLite:开发Android App时候,在手机上使用过
Redis:用过做缓存
话题2、选择使用哪种数据库的理由是什么?
- 继承,原先这个系统用什么就用什么,不会更改
- 熟悉程度,比如Mysql熟悉,那么默认情况下我会选择这个
- 技术是否符合,Android上一般就只能用SQLite;MongoDB是文档式,存储json的数据更容易等等
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
- Mysql->PostgreSQL做过数据迁移,一般就是先导表,然后再转换数据,还要解决类似转义字符等等一系列问题
MySQL和Redis必不可少啊, Redis地位不应该这么低啊 话题1、这10个数据库你用过哪些?在什么场景下用到的?
sqlserver:大数据量
mysql:小数据量
话题2、选择使用哪种数据库的理由是什么?
sqlserver比较健壮无bug
mysql功能较少
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
mysql导入数据到sqlserver,使用sqlserver的链接服务器 话题1、这10个数据库你用过哪些?在什么场景下用到的?
这10个数据库真正用过的就是oracle,是在业务运营支撑系统中用到的。其它的还用过内存数据库timesten,fastdb,还有内部开发的key value的文件数据库。
话题2、选择使用哪种数据库的理由是什么?
业务运营支撑系统业务关系比较复杂,主数据库用的是oracle。有的场景是需要快速响应的, 选用了内存数据库。话单要方便存储和查找,用了keyvalue的文件数据库。
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
做过,oralce和timesten本来就是一家,是通过cahegroup实现的。有的是自己写程序实现的。 话题1、这10个数据库你用过哪些?在什么场景下用到的?
1:Microsfot SQL Serer,公司ERP系统。
2:DB2,公司ERP系统。
话题2、选择使用哪种数据库的理由是什么?
ERP指定的数据库,没有选择。
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
有过。
1:DB2的数据通过ODBC同步到SQL中。
2:DB2的报表转到到WINDOWS打印管理。
3:EXCEL --> SQL--->DB2 话题1、这10个数据库你用过哪些?在什么场景下用到的?
1、6、8没用过,其他或多或少用过。
1号oracle太贵,没见过大世面的人很难遇到。
2号mysql,这个在web系统中用的最多,资料也多。
3号sqlserver,学校很多系统都是用它开发的,还有图书系统,在windows下用还是非常好的,虽然性能一般般。
4号做过一个小项目,现在主要日志用,曾经构想用它来做小文件的存储,但后来发现文件数多了以后,性能很一般,就放弃了。记录数是百万后,索引鼓胀很厉害。但最大的好处是集群实在是太简单了,如果没有join之类的操作,nosql还是非常不错的。
5号最近公布的结果又反超4号了,目前用的最多的就是它。第一次用它是一个mysql的学习系统,要涉及十多个表的联合查询,在记录到500、600万后,查询要到十多秒的样子,很难再优化上去,但测试了postgresql后,发现性能根本不是问题,根本就是小菜一碟,基本上毫秒就开,后来一直就用它了。现在用的最大的AAA认证,单表记录数已过2亿,性能还是刚刚的,一直没有清记录,就想看看啥时候性能才下降。另外postgresql在FreeBSD下配合zfs,就是不一样的感觉。
6号没用过
7号工作常用,属于最早接触到的数据库之一,其实最早接触的还有foxbase+,分析成绩啥的都用它们,属于用鼠标点点就能出结果的那种,当然数据量稍大的话,可能会卡掉。
8号没见过
9号写过一个小程序,在资源受限制、对性能要求不高的情况下可以用用,特别像手机等场合,用来存储数据还是比较合适的。
10号没真正用过,只是用来做网站缓存。
话题2、选择使用哪种数据库的理由是什么?
现在最喜欢的是postgresql,它要比mysql更好玩,支持的功能也多,函数也丰富,最主要的是多表联合查询,性能要比mysql好很多,简直就不是一个档次的东西,另外还能比较方便地进行扩展,正在研究它,感觉给postgresql非常大的灵活性。唯一不足的地方就是集群方案麻烦一些,好在我现在还没遇到,但是据说gp已经开源了,可能会是一个很好的解决方案。
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
数据库转换用Navicat,虽然要到处搜码。 话题1、这10个数据库你用过哪些?在什么场景下用到的?
ORACLE没得说。单位的重量级应用都是这玩意。数据库专家也是玩着最熟悉。
MYSQL自己玩过。单位里的监控系统也在使用,懂的人不多。动手折腾的人更少。基本就是早期LINUX自带的。部署WEB应用它作为后端数据库,不过监控系统本身也就是很小的数据量。SQLserver感觉我们现在已经很少用了。处了老旧系统有几个基本没有。出问题最多的也是它,重要生产系统根本不用。
话题2、选择使用哪种数据库的理由是什么?
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
话题1、这10个数据库你用过哪些?在什么场景下用到的?
oracle数据库:公司大型应用系统基本上都用oracle数据库,据我所知公司里面用到oracle数据库的有PDM系统、TDM系统、ERP、OA等系统。
SQL Serer\MySQL数据库:公司里面应用型的网站多采用此数据库,例如工资查询系统、企业文化网等等
Access数据库:这个数据库的应用主要用在了企业内部的共享系统上,这个说实话在我司应用还是比较常见的。
话题2、选择使用哪种数据库的理由是什么?
大型数据库Oracle、DB2
中大型数据库sybase、informix、Sqlserver
小型数据库access、sybase sql anywhere、dbf、execl
MySQL:如果网站基于PHP开发,则适合使用MySQL。如果您的虚拟主机采用Linux作为操作系统(即Linux虚拟主机),一般也采用MySQL。MySQL具有很高的效率,胜任大中小各种类型的网站应用。搭配PhpMyAdmin,用户通过浏览器即可方便的管理数据库。 SQLServer/Access: 如果网站是基于ASP或ASP.Net开发,一般使用微软的Access或SQLServer(即MsSQL)。其中Access是文本数据库,其查询或存储效率远低于SQLServer,不宜作为大型应用的选择,通常适用于小型网站。而SQLServer需要服务器安装专门的SQLServer程序,效率较高,并且有专业的管理客户端。 通常情况下,各类网站程序都会指定所需要的环境,例如Discuz、PHPWind、Shopex默认使用MySQL,而Discuz!NT、动易、Dvbbs等默认使用Access或SQLServer.
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
这个还是做过一些的。主要做过以下实力:
通过SSIS实现Oracle与Sqlserver数据库间的数据同步,并定时执行同步任务。
一 编写SSIS包程序
1.开始 》程序 》Business Intelligence Development Studio 》Business Intelligence Development Studio 打开SSIS编辑器
2.编辑器里,文件》新建》项目 ,在弹出的对话框选择 Integration Services 项目,确定
3.在解决方案资源管理器中,SSIS包》右键》SSIS导入和导出向导》选择 Oracle Provider For OLE DB(如果没有该项则需要安装Oracle客户端,或找个Oracle驱动)》点击 属性 》输入 数据源 用户名及密码(这里一定要勾上允许保存密码),测试连接是否能通过,若不能通过,则需好好看下Oracle的连接是否正确,尤其是远程Oracle的配置。》然后选择导入到的数据库,这里我们是sqlserver 就选 Microsoft OLE DB For Sql Server 》 输入 数据库名称及用户名密码 并选择要导入到的数据库》选择复制表或通过sql语句》选择源及目标,并配置映射的字段 》 完成》运行刚生成的包
二 通过sqlserver的作业来定时执行SSIS包
1.开始 》程序 》SQL2005》Managemenet Studio,服务器类型选择 Integration Services服务 确定 》已存储的包》MSDB》右键导入包,》选择文件系统,指定之前做好的包》导入(注意:保护级别选项中需要选择依靠服务器存储和角色进行访问控制,否则运行包时会报错-说明: 无法解密受保护的 XML 节点“DTS:Password”,错误为 0x8009000B“该项不适于在指定状态下使用。”。可能您无权访问此信息。当发生加密错误时会出现此错误。请确保提供正确的密钥。)
2.在sql2005里新建一个作业。SqlServer代理》右键》新建》作业 按照 常规-步骤-计划-警报-通知-目标的顺序 填写完成。其中需注意的是 步骤 里 选择SSIS包的时候,类型选择为 Sql Server Integration Services包 ,包源选择为 SSIS包存储区 话题1、这10个数据库你用过哪些?在什么场景下用到的?
1、Oracle没有用过,可能没弄过那么大的系统,大系统多用的是MySQL集群。
2、MySQL,这个常用,主要是Linux服务器上,稳定可靠,目前一些系统正准备转到MariaDB。
3、SQL Server,这个也常用,主要用在开发Windows下的服务器项目。
4、MongoDB 没用过
5、PostgreSQL现在软由器Untangle用的是这个数据,经常需要维护。
6、DB2 没用过
7、Access这个也常用,主要用在一些单机版的开发项目,简单实用啊。
8、Cassandra 没用过
9、SQLite Android开发用过。
10、Redis 没用过
话题2、选择使用哪种数据库的理由是什么?
1、是否适合项目,比如一个很小的东西,没有必要整个大型数据库,Access足够用了,整SQL即增加成本,也增加维护量。
2、系统的稳定性和可靠性。
3、数据库的价格。
4、数据库的维护成本。
话题3、有做过他们之间的数据转换或者同步吗?怎么实现的?
数据转换经常做,没啥好办法,花点时间写个小程序,也是很快的,比折腾数据、SQL句要有效的多。