Berkeley DB 的介紹

在滿滿都是 NoSQL 的世代中,意外在「Berkeley DB: Architecture」這邊看到 Berkeley DB 的介紹...

2006 年 Berkeley DB 的公司 SleepycatOracle 收購。在收購後 Oracle 改變了 open source 授權部份,從之前的 Sleepycat License 改成了 AGPLv3

Berkeley DB 算是早期功能很完整的 database library,由於 page level locking、crash-safe 加上有 transaction,也曾經被 MySQL 拿去當作 engine,不過在 MySQL 5.1 被拔掉:「14.5 The BDB (BerkeleyDB) Storage Engine」。

文章裡講了很多底層設計上的想法 (而非單純只說明「做了什麼」),以四個面向來討論。Buffer、Lock、Log 以及 Transaction,並且圍繞著 ACID 需求討論。

算是懷念的考古文?Google 弄出來的 LevelDBFacebook 接著改善的 RocksDB 的走向也不太一樣了,現在大家對 ACID 需求因為 NoSQL 盛行的關係又重新在檢視...

Oracle 的 CSO (Chief Security Officer) 對資安的想法

這應該是昨天很熱鬧的新聞,也不難看出 Oracle 對資安的心態。

參考「Oracle to 'sinner' customers: Reverse engineering is a sin and we know best」這篇報導,Oracle CSO Mary Ann Davidson 發表的原文已經被刪除,但這是 internet 時代,當然有完整的備份下來:「No, You Really Can’t (Mary Ann Davidson Blog)」。

提供給 ZDNet 報導的補充是:

The security of our products and services has always been critically important to Oracle. Oracle has a robust program of product security assurance and works with third party researchers and customers to jointly ensure that applications built with Oracle technology are secure. We removed the post as it does not reflect our beliefs or our relationship with our customers.

Oracle 的公關能力一如往常的優秀!

Mac 版的 Java 安裝 Ask Toolbar...

在「Oracle has just given you another reason not to install Java on your Mac」這篇看到 Mac 版的 Java 居然會試著安裝 Ask Toolbar:

Oh my god,這太厲害啦~

還是想貼一下這則 tweet...

Oracle 對 MySQL HA 方案的介紹

Oracle 的 Andrew Morgan 前幾天辦了場 Webinar,投影片以及一些說明有放出來讓大家事後可以參考:「Choosing the right MySQL High Availability Solution – webinar replay」。

其中第七頁的開頭「Don’t assume 99.999% HA needed for all apps」這句帶出了一個重點:99.999% 的每一個九都是成本,而且不是可以簡單帶過去的成本。

第八頁與第九頁給出了不同 HA 層級中的每個方案 (要注意到這是以 Oracle 的觀點來看),至於最後面將近五十頁的產品介紹看看就好... XD

Oracle 在 COSCUP 2014 上對 MySQL 效能調整的投影片

Oracle 的梶山隆輔在 COSCUP 2014 的投影片:「MySQL Performance Tuning at COSCUP 2014」:

推薦的主力在 MySQL 5.6,這點 Percona 的人也已經宣傳過很多次了:

MySQL 5.6 的改善很大,尤其是針對 InnoDB 相關的改善。在 MySQL 5.5 上還會有 CPU 吃不滿的情況,在 MySQL 5.6 好很多。

Elasticsearch 1.2.0

由於 Elasticsearch 的想法與實做比起 Solr 吸引人,可以看到愈來愈多團體換過去...

而前幾天 Elasticsearch 的官方放出 1.2.0 與 1.1.2 的消息:「elasticsearch 1.2.0 and 1.1.2 released」。

1.2.0 最大的改變是強制使用 Java 7 了,也就是不能在 Ubuntu 12.04 下安裝 default-jre 了,變成要裝 openjdk-7-jre。(要注意,官方建議的是 Oracle 官方的 JDK,而非 OpenJDK)

如果是 Ubuntu 14.04 就沒這個問題。(因為 default-jre 會裝 Java 7)

另外一個大改變是,之前產生安全問題的 dynamic scripting 預設關掉了,也就是 CVE-2014-3120

目前我的進度只到看完 mapping,但還沒實際開始塞資料進去玩...

Percona XtraDB Cluster 5.6 GA

放長假的時候總是可以感覺到世界上其他地方是沒放假的...

Percona 宣佈 Percona XtraDB Cluster 5.6 進入 GA (General Availability):「Percona XtraDB Cluster 5.6 GA release now available」。

Percona XtraDB Cluster 5.6 是基於 MySQL 5.6 以及 Galera Cluster 3 的版本。

其實最主要的效能改善是 Oracle 在 MySQL 5.6 上面下的功夫,比起 5.5 好不少。

Percona 官方有提到,現有的 PXC 5.5 可以在不停機的情況下升級到 5.6 (兩台輪流升級),這是件好事 (表示有問題回報時會被處理),但需要實際測試過才知道要怎麼做。所以就先在虛擬機裡面測試看看,沒問題就來規劃...

不過 PXC 上應該還是不能用 memcache interface 吧?之前有提到有問題,而且也沒看到有解決,所以應該還是不能用?

MySQL 上的 Thread Pool...

Percona 的人寫了一篇「Percona Server: Improve Scalability with Percona Thread Pool」,提到關於 MySQL 在連線數很多時的效能。

傳統的作法是一個連線使用一個 thread,這種方法實做起來很簡單,但當連線數超過一定程度時就會因為共用資源的限制而變慢。

其中一種解決方法是引入 Thread Pool 架構,也就是 M 個 thread 處理 N 個連線。

Oracle 有提供商用版本叫做 Thread Pool Plugin,就如同名字,是以 plugin 形式存在。這個功能在 5.55.6 都有。

MariaDB 也有 open source 實做的 Thread pool

而 Percona 則是使用 MariaDB 的版本。(原文是說有改善,不過 benchmark 並沒有列出來,我「猜」其實沒什麼改善...)

可以看到在多連線數時的效果相當好。在 MariaDB 的文件裡有提到會有改善的時機:

Threadpools are most efficient in situations where queries are relatively short and the load is CPU bound (OLTP workloads). If the workload is not CPU bound, you might still want to limit the number of threads to save memory for the database memory buffers.

query 相對短,而且是 CPU bound。

回頭看的時候發現 Percona Server 5.5 就有支援 Thread Pool 了,應該來測試看看效果如何...

Facebook 的 InnoDB patch 讓 table scan 速度變快...

Facebook 的 Database Engineering team 實作了 patch,讓 InnoDB 在 table scan 的速度大幅提昇:「Making full table scan 10x faster in InnoDB」。

第一個 patch 叫做 Logical Readahead。第二個 patch 是針對 async i/o 的改善 (Submitting multiple async I/O requests at once)。

引用文章內的幾段話就知道這幾個 patch 的功力了:

Logical backup size is much smaller. 3x-10x size difference is not uncommon.

備份出來的資料會變小,而且宣稱 1/3 到 1/10 不是罕見情況... -_-

With logical readahead, our full table scan speed improved 9~10 times than before under usual production workloads. Under heavy production workloads, full table scan speed became 15~20 times faster.

然後 table scan 的速度會快非常多... 10 倍?如果是平常就很操的 database 會更明顯?

如果這幾個 patch 如果沒有什麼問題,可以預期會被 merge 到 PerconaMariaDB,至於 Oracle 官方的 source tree... 有的話當然很好,沒有的話也很正常?

Percona 提供的 MySQL Git Mirror...

MySQL 的開發者是用 Bazaar (bzr) 為版本控制系統,放在 Launchpad 上,不過 open source 領域目前總是有人會想要轉到 Git 上... XD

Percona 提供 Oracle MySQL 的 Git mirror,目前是實驗性質:「Experimental Git mirror of Oracle MySQL trees」。

如果只是要拉 MySQL source tree 下來看 (而且手上只有 Git,沒有裝 Bazaar 的人),可以透過這份拉出來... 還不確定更新的頻率 :o