> 原文鏈接:?[The Log: What every software engineer should know about real-time data's unifying abstraction](https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying)?-?[Jay Kreps](http://www.linkedin.com/in/jaykreps)
> 基于開源中國社區的譯文稿:?[日志:每個軟件工程師都應該知道的有關實時數據的統一概念](http://www.oschina.net/translate/log-what-every-software-engineer-should-know-about-real-time-datas-unifying)
> 譯文發在[伯樂在線](http://blog.jobbole.com/):[The Log:每個程序員都應該知道有關實時數據的統一抽象](http://blog.jobbole.com/89674/), 2015-08-21
## 譯序
這篇文章是`LinkedIn`的`Kreps`發表的一篇博文,雖然很長,但被稱為[程序員史詩般必讀文章](http://bryanpendleton.blogspot.hk/2014/01/the-log-epic-software-engineering.html)。
[學習筆記:The Log(我所讀過的最好的一篇分布式技術文章)](http://www.cnblogs.com/foreach-break/p/notes_about_distributed_system_and_The_log.html)對本文做了很贊的摘要和解讀。
但作為一篇***經典***文章,還是值得去完整地研讀和理解:
1. 原文可以作為大數據/分布式系統領域一份導論式的資料。
作者對整個領域的理解和實戰精深廣博,抓出并梳理了這個領域的核心:日志。
2. 原文作為一手資料,有完整的分析過程,能夠深入和核對自己的理解。
3. 摘要和解讀不能替代自己理解。
信息被傳遞和過濾得越多,丟失和偏差也就越多。
當然,你也可以把這篇譯文本身作為英文原文的一種理解,在讀原文時有不理解的地方可以參考對比。 如果你能這么做,相信對于學習效果真真是極好的~
[自己](http://weibo.com/oldratlee)理解粗淺且這篇文章又長難度又大,翻譯中肯定會有不少不足和不對之處, 歡迎建議([提交Issue](https://github.com/oldratlee/translations/issues))和指正([Fork后提交代碼](https://github.com/oldratlee/translations/fork))!
[](https://github.com/oldratlee/translations/blob/master/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/images/oldratlee-alipay-qr.png)
PS:
* 為什么要整理和審校翻譯 參見?[譯跋](https://github.com/oldratlee/translations/blob/master/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/translation-postscript.md)
* 如果您覺得這譯文對你有幫助,可以用支付寶掃描右邊的二維碼,請我喝杯可樂啥的? ^_^
邀捐贈是還頭一回……
# [](https://github.com/oldratlee/translations/blob/master/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/README.md#日志每個軟件工程師都應該知道的有關實時數據的統一抽象)日志:每個軟件工程師都應該知道的有關實時數據的統一抽象
我在六年前加入到`LinkedIn`公司,那是一個令人興奮的時刻:我們剛開始面臨單一龐大的集中式數據庫的限制問題,需要過渡到一套專門的分布式系統。 這是一個令人興奮的經歷:我們構建、部署和運行分布式圖數據庫(`distributed graph database`)、分布式搜索后端(`distributed search backend`)、?`Hadoop`以及第一代和第二代鍵值數據存儲(`key-value store`),而且這套系統一直運行至今。
這個過程中,我學到的最有益的事情是我們所構建這套系統的許多組件其核心都包含了一個很簡單的概念:日志。 日志有時會叫成 預先寫入日志(`write-ahead logs`)、提交日志(`commit logs`)或者事務日志(`transaction logs`),幾乎和計算機本身形影不離, 是許多分布式數據系統(`distributed data system`)和實時應用架構(`real-time application architecture`)的核心。
不懂得日志,你就不可能真正理解數據庫、`NoSQL`存儲、鍵值存儲(`key value store`)、數據復制(`replication`)、`paxos`、`Hadoop`、版本控制(`version control`),甚至幾乎任何一個軟件系統;然而大多數軟件工程師對日志并不熟悉。我有意于改變這個現狀。 本文我將帶你瀏覽有關日志需要了解的一切,包括日志是什么,如何在數據集成(`data integration`)、實時處理(`real time processing`)和系統構建中使用日志。