Maclean’s Oracle Database Tech Blog Archives
-
回顾Oracle与Google的判决书概要
Oracle与Google的判决书概要 一大早听到了各种各样的有冲击性的消息,真是不平静的第一季度的最后一天啊。关于Oracle与Google的官司,我很在意其中到底还有些什么问题,所以我试着略读了一下判决书。 过程 2010年8月Oracle告了Google。当时争论的要点是侵犯专利。(publicKey1) 2012年4月旧金山联邦法院开始诉讼 2012年5月陪审团判决Google没有侵犯专利。但是fair use (US trademark law 美国商标方案)持不同意见 2012年6月Oracle对Google的Java/Android诉讼,协调成专利损害赔偿金为0。没能保护到这次讨论的37件Java API的著作权 2012年oracle不服“不承认java API是著作权的对象”的判决。再次上诉 2014年5月,控诉法院颠覆地方法院的判决,承认API是著作权的对象。这些API的使用是否符合Google主张的fair use的审理,被打回地方法院重审 2014年谷歌上诉美国联邦最高法院 美国联邦最高法院驳回谷歌的上诉申请 一度还有对Google有利的裁决,但之后由于oracle的上诉,Oracle的主张得到了认可,API得到了著作权保护。然后Google再次上诉,于是出现了现在成为新闻的,最高法院驳回谷歌的上诉申请(www.askmac.cn )。
-
MongoDB NOSQL数据库连载 第11回 MongoDB的备份
本文永久链接地址:https://www.askmac.cn/archives/mongodb-backup.html 第11回 MongoDB的备份 在本连载中,至此我们一直注目MongoDB的功能方面的内容,这次开始我们将分几回介绍MongoDB的非功能方面的内容。这次我们将说明非功能特点中不可或缺的备份功能。另外,我们将使用MongoDB的最新版本v2.4。 关于命令标记 $ : 用命令行来实行的命令 > : 用mongo shell执行的命令 MongoDB的备份的概要 要对MongoDB进行备份,需要对数据进行备份以及对配置选项进行备份。 配置选项用mongod的启动命令或者配置文件来进行指定。无论那种情况,因为只要复制mongod启动shell以及配置文件等文件就可以进行备份了,所以在这次的文章中将省略说明。 在数据的备份之中,可以将全备份与部分备份来进行组合使用,但在MongoDB v2.4中没有提供增量备份的功能。因此,这次我们介绍全量备份以及restore的方法。 [参考] 增量备份是为了恢复因为人为错误损害的数据而被实现的功能,其功能目的对应MongoDB的延迟复制功能。关于延迟复制功能,请参考官方网站。 要用MongoDB进行全量备份时,有以下两种方法。 复制数据文件的方法 利用mongodump
-
第10回 MongoDB中的聚集aggregation 处理
本文永久链接地址:https://www.askmac.cn/archives/mongodb-aggregation.html 第10回 MongoDB中的aggregation 聚集处理 MongoDB中的aggregation 聚集处理的概要 一般而言,在NoSQL的程序中,没有RDB的SQL这种Group以及Sum函数等聚集功能。要执行聚集的话,需要在应用上独立地写代码。 但是,MongoDB的开发方针是是一边维持NoSQL的性能,一边实装类似于RDB的功能,关于聚集功能早就实装了。在MongoDB中执行聚集处理的方法有三种。 Aggregation Framework SQL中提供Group By语句以及Sum函数。可以从Mongo Shell中与查询一样实施。一部分的处理($group与$sort)就对应sharding,用各shard进行处理。 MongoDB的Map/Reduce功能 独立定义Map函数/Reduce函数,执行聚集处理。在Aggregation Framework中无法做到的复杂的聚集处理,使用这种方法。因为对应sharding,所以可以执行分散处理。 与其他聚集处理软件/框架的合作 为了执行大规模的聚集处理,也可以与其他聚集处理软件/框架合作。在这次的文章中,我将介绍与Hadoop的合作。 那么马上让我们来使用Aggregation Framework,来试着实际操作处理吧。
-
第7回 GridFS——在MongoDB中保存大容量文件的方法
翻译自 : http://gihyo.jp/dev/serial/01/mongodb/0007 本文永久链接地址:https://www.askmac.cn/archives/mongodb-gridfs.html GridFS的概要 能在MongoDB中保存的Document尺寸一般有最大16Mbyte的限制。这对于保存一般的文本文件是非常足够的尺寸,但要保存一些巨大的文本文件以及视频等Binary data时,就会出现超出16Mbyte的情况。想在MongoDB中保存16Mbyte以上的文件时,通过使用GridFS这种接口,可以将数据进行多个分割来进行保存。这次,我将解说处理MongoDB中处理大尺寸文件的功能——GridFS。 GridFS的概要图 图:左青:大文件 左蓝:girdFS interface(mongofile或者是driver) 黄:1.将文件分割到chunk中,写入文件。 2.文件的元数据(文件名、尺寸等等)的写入 上图例:文件 collection 右Mongod以下:chunk用collection、Binary data、Binary data、Binary data、元数据用collection、元数据。 被分割的数据我们称之为chunk,作为Binary data保存在Document中。 用数据库来管理文件的优点 话说回来,用数据库管理文件有怎样的好处呢。 在大部分系统之中,图片/音频/视频等大尺寸Binary data使用OS的文件系统进行保存。使用文件系统的话,就能用用习惯的接口访问文件。但是根据情况不同,文件被保存在数据库中,管理起来就会更有效率。以下我试着整理了用数据库来管理文件的优点。 元数据管理简便 不仅是文件,也能通过数据库对文件相关的元数据进行同时管理。比如,文件的尺寸与制成者,制成时间等。视频文件的话也可以管理播放次数。在数据库中与文件相关的元数据也非常简便,有扩张性。另外,包含元数据的备份也很容易。
-
第5回 试试MongoDB的Sharding
翻译自: http://gihyo.jp/dev/serial/01/mongodb/0005 第5回 试试MongoDB的Sharding 前言 这次我将说明MongoDB的sharding。 Sharding是指将数据分散到多个服务器中的功能。这次我将先说明sharding,之后是sharding的概要,之后将解说在sharding中登场的几个关键词。第二章之后将解说sharding的架构顺序。 Sharding在MongoDB功能之中是很重要而复杂的。用手边的环境来架构的话,对sharding的理解有很大帮助,请一定好好参考本文再进行架构。 sharding的优点 Sharding通过将MongoDB进行水平Scaling的功能,有以下优点。 因为分散负荷所以可以提高性能 通过将数据分散到多个服务器中,可以减少CPU以及I/O的负荷。虽然是复述,但MongoDB可以用key的范围数据。通过设定合适的范围,可以将负荷进行水平Scaling。 由于资源分散导致性价比的提高。 近年因为内存以及磁盘的价格变得非常便宜了,尺寸越大内存模块价格越高,另外价格的上升幅度也会增多。要举内存的例子的话,共计需要64GB的内存时,比起与16个4GB内存Module的价格,4个16GModule的价格一般而言会更贵。内存以及磁盘在一个服务器中能够累计的Unit数是有极限的。在这样的背景下,在多个服务器中,使得数据分散,可以使得性价比提高。在MongoDB因为内存与性能直接相关,我推荐要保证有充足尺寸的内存。 MongoDB的sharding的概要 关于sharding,我将说明数据分散以及自动Balancing这两个特征。 根据Shard key的范围的数据分散 MongoDB的sharding采用范围分区(※1)。通过指定Shard key,可以决定个服务器中存储的数据的范围。服务器间不拥有重复数据,一个数据被存储的数据库是根据Shard key的范围来决定。 用图表示Sharding的image的话,就如图1所示。在图一中出现的术语我稍后说明。首先请随我对全体内容有个大致印象。 图1 sharding的概要图 图:右图例:mongos服务器 Shard Chunk 数据 ※1) 仅仅观察数据分散这个点的话,几乎与MySQL的范围指定的分区几乎相同。 自动balancing Key范围的调整以及伴随调整的服务器间的数据的移动,MongoDB有将其全部自动进行balancing的功能。被设计不去在意由于自动balancing导致的服务器间的数据的偏差也行的形式。另外追加新的服务器时,自动调整会使得执行数据移动的偏差渐渐消失。 ※2) 在设定中可关闭自动balancing 重要关键词的说明 现在我将说明在sharding中出现的关键词。…
-
用Hadoop的各种语言来进行wordcount(3):Apache Crunch
本文永久链接:https://www.askmac.cn/archives/hadoop-wordcount-3.html 用Hadoop的各种语言来进行wordcount(3):Apache Crunch 这是Wordcount的最后一篇讲座了。今天用crunch在MapReduce与Spark两方面进行wordcount。 Crunch (MapReduce) Apache Crunch是apache project的OSS,所以这是将Google的Java Flume作为基础的。通过使用crunch,可以简单地记述mapreduce(现在是spark)的pipeline(现在是spark的program)的库。(即可以简单做到Apache Crunch:MapReduce 模块的java 库) Crunch是由Cloudera的首席数据科学家,Josh Will开发、维护的。国外的数据科学家都是自己开发必要的工具呢。(Cloudera Oryx、Impyla、其他)。真是太厉害了。 crunch的参考链接 http://crunch.apache.org/getting-started.html WordCount的代码参考crunch的页面,可以下载演示用代码来执行。 git clone http://github.com/jwills/crunch-demo
-
用Hadoop的各种语言进行wordcount(2):Apache Spark
本文永久链接地址:https://www.askmac.cn/archives/spark-wordcount-2.html 继续昨天的内容,今天也是进行wordcount。今天是用Apache Spark (Scala、Python、Java)来执行wordcount。 Spark是用Scala、Python、Java来进行wordcount。Scala与Python是用REPL,Java是用Spark应用来执行。 Spark中的wordcount是在spark站点张有的样本,我参考了Cloudera的博客。 https://spark.apache.org/examples.html http://blog.cloudera.com/blog/2014/04/how-to-run-a-simple-apache-spark-app-in-cdh-5/ github 上的位置 https://github.com/kawamon/wordcount.git Spark (Scala) 首先从Scala开始。 Cloudera Quickstart VM的Spark有版本问题,在spark-shell启动时会出现版本错误。 参考信息:http://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/5-1-Quickstart-VM-issue/td-p/16684 这次我们就无视安全性,来进行以下变更。 $ sudo -u hdfs hdfs dfs -chmod -R 777 /user/spark 另外,终止Quickstart VM进行启动的情况下,会有不能顺利与Spark Maste连接的情况。这时请试着重启Master与Worker(与History Server) 代码 val file = sc.textFile(“hdfs://quickstart.cloudera/user/cloudera/input”) val counts = file.flatMap(line => line.split(” “)).map(word =>…
-
用Hadoop的各种语言进行wordcount(1)
本文永久链接:https://www.askmac.cn/archives/hadoop-wordcount-1.html 用Hadoop的各种语言进行wordcount(1) 我稍微去调查了下Apache Crunch,顺便就在Hadoop中试着用各种语言来执行wordcount。首先是用MapReduce, HadoopStreaming、Hive、Pig执行了wordcount。 (追记):在github中放code:https://github.com/kawamon/wordcount.git Wordcount的闲话 Wordcount经常在Hadoop的MapReduce的最开始的说明中使用,也有Hello World这样的意思。 Hadoop的MapReduce中,Wordcount作为样本拿来讲解的理由实在有点暧昧,大家肯定想问,为什么要拿wordcount来做样本呢。 现在处理所谓的量很多的大数据时,有两个问题。 为了将存储中保存的大量数据能用CPU来读入处理,移动数据是非常费时间的 用1台机器来执行耗费的时间太长(量大到内存上无法搭载,或者1台的CPU无法处理) 那么让我们试着使用之前安装的Cloudera Quickstart VM来执行吧。 准备 首先在HDFS中复制测试用的数据。这次使用的是crunch的样本,使用的是两个单纯的文件(file01, file02)(这是为了更容易比较结果)。 $ hadoop fs -cat input/file01 Hello World Bye World $ hadoop fs -cat input/file02 Hello Hadoop Goodbye Hadoop MapReduce (Java) 首先是MapReduce (Java)。New…
-
不建议把Oracle redo存放在SSD上
不建议把Oracle redo存放在SSD上 不建议把redo存放在SSD上,主要原因在于 SSD的优势为读取速度,其对 随机写也有一定优化,但 redo日志的IO类型主要为顺序写而非随机写。 oracle 官方Support文档 《How to Minimize Waits for ‘Log File Sync’ (Doc ID 857576.1)》指出不建议把redo 存放在RAID 5或者 Solid State Disk (SSD)上。 以下是REDO存放在SAS和SSD上的性能对比图(越短越好),可以看到当并发较高时SSD甚至比普通SAS要差: 一般建议用户考虑将以下几类文件存放在SSD上: 读写最多的表空间的数据文件,包括Undo 临时表空间
-
【MySQL学生手册】mysqlshow程序
本文地址:https://www.askmac.cn/archives/mysqlshow-cmd.html mysqlshow客户端程序可用于生成你的数据库和表的结构信息。它提供了类似show语句显示数据库,数据库下的表,或列信息,索引信息等功能的命令行接口。mysqlshow命令有以下语法: mysqlshow [options] [db_name [table_name [column_name]]] mysqlshow命令中的options部分包括有一些标准的连接命令项,如 –host,–user等。如果默认使用的连接参数不适合的话,你就需要主动提供这些项的设置。mysqlshow也提供了一些特定操作所使用的项。我们可以调用mysqlshow的 –help项来查看此客户端程序可使用的全部项。 mysqlshow所执行的操作结果取决于你提供的那些非命令项参数: 如果无参数提供,mysqlshow显示的是show databases类似的结果: 使用单个参数,mysqlshow会将其作为数据库名,执行效果类似于对此数据库执行show tables语句: