イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです。ITトレンド・List Finderの開発をベースに、業務外での技術研究などもブログとして発信していってます!


このエントリーをはてなブックマークに追加

お試し Cloud Spanner その2

KTNです
突然ですが、みなさま「The International 2017」最高でしたね!
みまさまご存知だと思いますが、ご存知じゃない方に紹介させていただくと
私が大好きなDOTA2の、賞金総額26億円になる大会です
http://www.dota2.com/international/announcement/

大会はアメリカのシアトルで行われたのですが、
Finalが日本時間の8/13(日) 深夜2:00からだったので、リアルタイムで見てました、いや〜盛り上がりますね〜!
動画はこちらで見ることが出来ます
https://www.twitch.tv/videos/166432856
深夜3時ぐらいにふと気がつくと同時視聴35万人でした
見たこと無い方はちらっと見ていただければと!思っている以上にみんな本気です

eスポーツの賞金ランキングもご紹介したいと思います
https://www.esportsearnings.com/players
ほぼDOTA2が独占してますね
ということで誰か私と一緒に賞金獲得目指しませんか!?

1. Cloud Spannerについて調べる

Cloud Spannerの論文を読み始めてみました
https://static.googleusercontent.com/media/research.google.com/ja//archive/spanner-osdi2012.pdf
でもこれ英語でして、、、
英語は全く無理なので、Google翻訳を使わせて頂きました
あくまでいま時点での私の解釈で書かせてもらいますので、間違っている可能性があります
間違いが判明次第修正はしますが、その旨ご了承ください
※念のため原文の載せてあります、そちらを読んでいただくのが間違いが無いので

それでは、全部書くと量が多くなるので気になるところを載せていきます
まず「1. INTRODUCTION」です

原文:It is the first system to distribute data at global scale and support externally-consistent distributed transactions
Google翻訳:グローバル規模でデータを配信し、外部で一貫した分散トランザクションをサポートする最初のシステム
→この前の記事でも書きましたが、グローバル規模のトランザクションですね世界初ということで

原文:Spanner is designed to scale up to millions of machines across hundreds of datacenters and trillions of database rows
Google翻訳:スパナは数百万台の機械にスケールアップできるように設計されています 数百のデータセンターおよび数千のデータベース行
→「trillions of database rows」なので数兆(が正しい?)のデータベース行にも対応
 無限のスケールアップ(スケールアウトじゃ無い? )ですね

原文:Our initial customer was F1 [Shute et al. 2012], a rewrite of Google’s advertising backend.
Google翻訳:最初の顧客はF1でした[Shute et al。 2012]、Googleの広告バックエンドの書き直し
→F1って何という感じで、これ以降をちょっと読んでみたのですが書いてないようでした
 なので、ちょっとF1について調べてみました

2. F1って何?

Googleさんのページに説明がありました
https://research.google.com/pubs/pub41344.html

原文:F1 is a distributed relational database system built at Google to support the AdWords business
Google翻訳:F1は、GoogleでAdWordsビジネスをサポートするために構築された分散リレーショナルデータベースシステムです
→Cloud Spannerと若干似ているかなという印象です

原文:F1 is built on Spanner, which provides synchronous cross-datacenter replication and strong consistency
Google翻訳:F1はSpanner上に構築されており、データセンターの同期複製と強力な一貫性を提供します
→ここで完全に意味がわからなくなりまして、
 私の認識ではCloud Spannerは「水平スケール可能なリレーショナル・データベース」なのですが、
 これの上にF1を構築というのがイメージできませんでした
 この書き方だと、Cloud Spannerをストレージかなにかだと思って読めば違和感が無くなる感じですね
 恐らく何かの認識が間違っている(例えば、「Cloud Spanner」とここで書いている「Spanner」が別物!?など)気がします

と、疑問を持ちながら調べて見ると
Googleさんのでは無いのですが、こんな記事を見つけました
https://open-groove.net/all-things-data/spanner-f1-mesa-cockroachdb/
Spanner、F1、また新しい単語のMesaを解説頂いているのですが、その中で以下の記述が、、、
「Spannerは低レイヤーなストレージシステムで、F1はその上に作られたDB」

Spanner:低レイヤーなストレージシステム
Cloud Spanner:水平スケール可能なリレーショナル・データベース
こういうことでいいでしょうか!?
今読んでいる論文もそもそもストレージのことを書いているのではと思い見直したところ、

原文:Spanner is Google’s scalable, multiversion, globally distributed, and synchronously replicated database
Google翻訳:Spannerは、Googleのスケーラブルでマルチバージョンで、グローバルに分散され、同期レプリケートされたデータベースです
→ということでこれはデータベースについて書いてあるようでした
 ただ論文の最後を見ると、「Publication date: August 2013」とちょっと古かったので
 「Cloud Spanner」について書いてあるか若干不安は残るものの、
 今は間違っているかもわかないので、このまま読み続けて行きたいと思います

3.引き続きCloud Spannerについて調べる

原文:we have also consistently received complaints from users that Bigtable can be difficult to use for some kinds of applications: those that have complex, evolving schemas, or those that want strong consistency in the presence of wide-area replication
Google翻訳:Bigtableは、複雑なスキーマや進化するスキーマを持つアプリケーションや、ワイドエリアレプリケーションの存在下で強力な一貫性を必要とするアプリケーションなど、ユーザーからの苦情を一貫して受け取りました
→ワイドエリアにレプリケーションしつつ、一貫性を必要とする場合にBigtableの利用は難しいということで、
 Bigtableがそういう用途で作られていないので当然な感じはしますね

原文:Spanner supports general-purpose transactions, and provides an SQL-based query language
Google翻訳:Spannerは汎用トランザクションをサポートし、SQLベースのクエリ言語を提供します
→これがBigtableと比べてCloud Spannerのすごいところですね、よくあるRDBと同じということですね

原文:Second, Spanner has two features that are difficult to implement in a distributed database: it provides externally consistent [Gifford 1982] reads and writes, and globally consistent reads across the database at a timestamp. These features enable Spanner to support consistent backups, consistent MapReduce executions [Dean and Ghemawat 2010], and atomic schema updates, all at global scale, and even in the presence of ongoing transactions
Google翻訳:第2に、スパナには難しい2つの機能があります 分散データベースに実装すること:外部的に一貫した[Gifford 1982] 読み取りと書き込み、タイムスタンプでデータベース全体の一貫性のある読み取りが可能です。 これらの機能により、Spannerは一貫したバックアップ、一貫したMapReduce[Dean and Ghemawat 2010]、アトミック・スキーマの更新はすべて世界規模で行われ、 進行中の取引があっても
→世界規模で実行中の処理があっても、一貫した読み書きのサポートと、バックアップがサポートされているとのことで、
 これは期待どおりでした

原文:The timestamps reflect serialization order. In addition, the serialization order satisfies external consistency (or equivalently, linearizability [Herlihy and Wing 1990]): if a transaction T1 commits before another transaction T2 starts, then T1’s commit timestamp is smaller than T2’s. Spanner is the first system to provide such guarantees at global scale.
Google翻訳:タイムスタンプはシリアル化順序を反映します。 さらに、逐次化順序は外部整合性(または等価的に線形性[Herlihy and Wing 1990])を満たします。トランザクションT1が別のトランザクションT2が開始する前にコミットすると、T1のコミットタイムスタンプはT2よりも小さくなります。 スパナは、世界規模でそのような保証を提供する最初のシステムです
→タイムスタンプを使って世界規模のトランザクション保証を実現しているようです
 この後の章でタイムスタンプをどのように使っているのか書かれていると思うので、じっくり見ていきたいと思います

原文:The key enabler of these properties is a new TrueTime API and its implementation. The API directly exposes clock uncertainty, and the guarantees on Spanner’s timestamps depend on the bounds that the implementation provides. If the uncertainty is large, Spanner slows down to wait out that uncertainty
Google翻訳:これらのプロパティの主要なイネーブラは、新しいTrueTime APIとその実装です。 APIはクロックの不確実性を直接的に明らかにし、Spannerのタイムスタンプに対する保証は、実装が提供する境界に依存します。 不確実性が大きい場合、Spannerはその不確実性を待つために減速します
→各Cloud Spannerインスタンス間の時間のズレを計測して、
 データベースの処理を減速させてでもズレを修正するようですね
 トランザクション管理に関連してくると思うので、
 「TrueTime API」についても理解する必要がありそうです

セクション1は以上となります
この後のセクションは以下のとおりです、
 セクション2:Cloud Spannerの実装構造、機能セット、設計について
 セクション3:TrueTime APIと、その実装について
 セクション4:TrueTime APIを使用した一貫性のある分散トランザクションについて
 セクション5:Cloud Spannerのパフォーマンス
 セクション6,7,8:今後について

今回はここまでにして次回も引き続き論文を見ていきたいと思います
それでは