Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for 
change notification.

The "ArchitectureOverview_JP" page has been changed by Kazuki Aranami.
http://wiki.apache.org/cassandra/ArchitectureOverview_JP?action=diff&rev1=11&rev2=12

--------------------------------------------------

  ## page was copied from ArchitectureOverview
  #language ja
- これはCassandra(カサンドラ)ユーザー向けのCassandraアーキテクチャーの概略です。
  
+ 
+ アーキテクチャーオーバービューは、Cassandra(カサンドラ)ユーザー向けのCassandraアーキテクチャーの概略です。
+ 
+ 
- 開発者の方は、Wikiの[[../|フロントページ]]から開発者向けのリンクをご覧ください。
+ 開発者の方は、Wikiの[[FrontPage_JP|フロントページ]]から開発者向けのリンクをご覧ください。
+ 
  
  このページの情報は、オライリー主催のOSCON 
2009[[http://assets.en.oreilly.com/1/event/27/Cassandra_%20Open%20Source%20Bigtable%20+%20Dynamo%20Presentation.pdf|Cassandra:
 Open Source Bigtable + Dynamo、Jonathan Ellis (Rackspace Hosting) 
(PDF)]]のプレゼンテーション資料に基づいています。
  
@@ -13, +17 @@

   * MySQLでは、あまりにも多くのランダムI/Oが発生する
   * ファイルベースのソリューションでは、あまりにも多くのロックが必要とされる
  
+ 
  新たなデータの出現
- 
   * スケールアップではなく、スケールアウト
   * オンライン状態でのロードバランシングとクラスタの増加の実現
   * 柔軟なスキーマ
@@ -23, +27 @@

  
  
  === CAP定理 ===
+ Eric 
Brewer(エリック・ブルーワー)の'''[[http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf|CAP定理
 
(PDF)]]'''に支配された状況では、'''Consistency(一貫性、コンシステンシー)'''、'''Availability(可用性、アベイラビリティー)'''、'''Partition-tolerance(分割耐性、パーティショントレランス)'''のうち2つを選択する必要があります。同時に3つの性質を満たすことはできないため、それらを得るにはレイテンシー(遅延)を許容する必要があります。(訳注:BASEの考えを適用する必要があります)
  
  
- Eric 
Brewer(エリック・ブルーワー)の'''[[http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf|CAP定理
 
(PDF)]]'''に支配された状況では、'''Consistency(一貫性、コンシステンシー)'''、'''Availability(可用性、アベイラビリティー)'''、'''Partition-tolerance(分割耐性、パーティショントレランス)'''のうち2つを選択する必要があります。同時に3つの性質を満たすことはできないため、それらを得るにはレイテンシー(遅延)を許容する必要があります。(訳注:BASEの考えを適用する必要があります)
+ 
Cassandraは、可用性と分割耐性('''AP''')を重視しています。一貫性と遅延はトレードオフの関係にあり、Cassandraでは整合性レベルが調整可能(tunable)です。遅延を許容すればCassandraでは強い一貫性(Strong
 Consistency)を得ることができます。しかし、行ロックを取得することはできません。その点は、HBaseの方が優れています。
  
- 
Cassandraは、可用性と分割耐性('''AP''')を重視しています。一貫性と遅延はトレードオフの関係にあり、Cassandraでは調整可能(tunable)です。遅延を許容すればCassandraでは強い一貫性(strong
 consistency)を得ることができます。しかし、行ロックを取得することはできません。その点は、HBaseの方が優れています。
  
  メモ: HBaseは、一貫性と分割耐性('''CP''')を重視しています
  
+ 
  === 歴史とアプローチ ===
  2つの有名な論文
- 
   * [[http://labs.google.com/papers/bigtable-osdi06.pdf|Bigtable: A 
Distributed Storage System for Structured Data, 2006 (PDF)]]
   * 
[[http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf|Dynamo:
 amazon's highly available keyvalue store, 2007 (PDF)]]
  
  
- 
  2つのアプローチ
- 
   * BigTable:”どのようにしてGFS上に分散データベースを構築できるか?” 
   * Dynamo:”どのようにして、分散ハッシュテーブルをデータセンターに相応しいように構築できるか?”
  
  
- 
  === 10,000フィートからのCassandra要約 ===
- 
- 
-  * Dynamoのパーティション分割およびレプリケーション
+  * Dynamoのパーティショナーおよびレプリケーション
   * BigTableに類似したログ構造のColumnFamilyデータモデル
  
  
- 
  === Cassandraハイライト ===
- 
- 
   * 高可用性 
   * 可用性の増分 
-  * イベンチュアルコンシステント(Eventually consistent)
+  * イベンチュアルコンシステント(Eventually Consistent)
-  * 一貫性と遅延というトレードオフの関係が調整可能 
+  * 一貫性と遅延というトレードオフの関係が調整可能
   * 最小限の管理
   * SPOF(Single Point of Failure、単一障害点)がない
  
  
  P2P流通モデル:SPOF(単一障害点)のないことを意味する整合性モデルで動作します。
- 
- 
- 
- 
- 
  
  
  == キーの流通と分割 ==
@@ -81, +72 @@

  Nodes B, C and D store keys in the range (''a'',''b'') including key ''k''
  
  
- 
{{{パーティション分割}}}のために{{{IntitialToken}}}パラメーターを使用して、Cassandraのどこにキーがあるのか、その方向性を決定することができます。[[StorageConfiguration|ストレージの構成]]を参照してください。
+ 
{{{パーティショナー}}}のために{{{IntitialToken}}}パラメーターを使用して、Cassandraのどこにキーがあるのか、その方向性を決定することができます。[[StorageConfiguration|ストレージの構成]]を参照してください。
+ 
  
  アーキテクチャーの詳細
- 
- 
   * O(1)ノードのルックアップ 
   * 明示的なレプリケーション
-  * イベンチュアルコンシステント(Eventually consistent)
+  * イベンチュアルコンシステント(Eventually Consistent)
- 
- 
- 
  
  
  === アーキテクチャーレイヤー ===
- 
  ||コアレイヤー || ミドルレイヤー || トップレイヤー||
- || メッセージサービス(Messaging service) <<BR>> ゴシップ障害検出(Gossip  Failure detection) 
<<BR>>クラスタの状態(Cluster state) <<BR>>パーティション分割(Partitioner) 
<<BR>>レプリケーション(Replication) <<BR>>||コミットログ(Commit log) <<BR>>Memtable 
<<BR>>SSTable <<BR>>インデックス(Indexes) <<BR>>圧縮(Compaction) <<BR>>|| 
廃棄(Tombstones)の有効期間 <<BR>> ハンドオフのヒント(Hinted handoff) <<BR>> 読み込みの修復(Read 
repair) <<BR>> ブートストラップ(Bootstrap) <<BR>> 監視(Monitoring) <<BR>> 管理ツール(Admin 
tools) ||
+ || メッセージサービス(Messaging service) <<BR>> ゴシップ障害検出(Gossip  Failure detection) 
<<BR>>クラスタの状態(Cluster state) <<BR>>パーティショナー(Partitioner) 
<<BR>>レプリケーション(Replication) <<BR>>||コミットログ(Commit log) <<BR>>Memtable 
<<BR>>SSTable <<BR>>インデックス(Indexes) <<BR>>コンパクション(Compaction) <<BR>>|| 
廃棄(Tombstones)の有効期間 <<BR>> ハンドオフのヒント(Hinted handoff) <<BR>> 読み込みの修復(Read 
repair) <<BR>> ブートストラップ(Bootstrap) <<BR>> 監視(Monitoring) <<BR>> 管理ツール(Admin 
tools) ||
- 
- == Writes ==
  
  
- Any node Partitioner Commitlog, memtable SSTable Compaction Wait for W 
responses
+ == 書き込み ==
+ 任意のノードにおけるパーティショナー、コミットログ(Commit log)、Memtable、SSTable、コンパクションは、Wの応答を待ちます。
  
  
+ 書き込みモデル:
- Write model:
- 
- There are two write modes:
-  * ''Quorum write'': blocks until quorum is reached
-  * ''Async write'': sends request to any node. That node will push the data 
to appropriate nodes but return to client immediately
  
  
- If node down, then write to another node with a hint saying where it should 
be written two. Harvester every 15 min goes through and find hints and moves 
the data to the appropriate node
+ 2つの書き込みモード:
+  * ''クォーラム書き込み(Quorum write)'': ブロッククォーラムに達するまで
+  * ''非同期書き込み(Async write)'': 
任意のノードに要求を送信します。そのノードから適切なノードにデータを送信し、ただちにクライアントへ返信します。
+ 
+ 
+ 
仮にノードがダウンした場合、別のノードへヒント(訳注:ダウンしたノードの情報)と共に書き込みます。このヒントは2つ書き込まれる必要があります。ハーベスターが、15分毎に通過し、ヒントを見つけ、データを適切なノードへ移動します。
+ 
  
  === Write path ===
  At write time, 
@@ -138, +125 @@

     * Discard tombstones
  
  
+ === 書き込みのプロパティ ===
+  * 読み込みをしない
+  * シークを行わない
+  * ''高速''
+  * ColumnFamilyの範囲内がアトミックである
+  * 常に書き込み可能
- === Write properties ===
- 
-  * No reads 
-  * No seeks 
-  * ''Fast''
-  * Atomic within ColumnFamily 
-  * Always writable
  
  
+ == 削除 ==
- 
- 
- == Remove ==
  
  
  Deletion marker (tombstone) necessary to suppress data in older SSTables, 
until compaction Read repair complicates things a little Eventually consistent 
complicates things more Solution: configurable delay before tombstone GC, after 
which tombstones are not repaired
  
  
+ == 読み込み ==
  
  
+ === パスの読み込み ===
+  * 任意のノード
+  * パーティショナー
+  * Rの応答を待つ
+  * Nの待機 - Rの応答をバッググラウンドで処理中に、読み込みの修復を実行
  
  
+ === Cassandraはプロパティを読み込む ===
+  * 複数のSSTableを読み込む
+  * (まだ高速ですが)遅延書き込み
+  * シークはより多くのメモリー消費を軽減することが可能
+  * 数十億の行にわたりスケール
- 
- 
- 
- 
- 
- 
- 
- == Read ==
- 
- === Read path ===
- 
- 
-  * Any node 
-  * Partitioner 
-  * Wait for R responses 
-  * Wait for N -­ R responses in the background and perform read repair
- 
- === Cassandra read properties ===
- 
-  * Read multiple SSTables 
-  * Slower than writes (but still fast) 
-  * Seeks can be mitigated with more RAM 
-  * Scales to billions of rows
  
  
  == 一貫性 ==
- [[API|API]]ドキュメントも参照してください。
+ [[API|Thrift API]]ドキュメントも参照してください。
+ 
  
  
何か操作を行った後に、システムが一貫性を保持した状態を、どのようにして実現するのか、整合性について詳しく説明していきます。Cassandraのような分散システムのデータは、通常一度ライターが書き込みを試行し、すべて読み込みができることを確認した後に、実際に書き込みを行うことをまず理解してください。
  
- ほとんどのACIDなリレーショナルデータベースで使用されている、強い一貫性(strong 
consistency)とは違い、CassandraはBASEスペクトラム(連続体)の片隅に位置します。(訳注:Cassandraは、NoSQLの文脈で語られるBASEの概念を適用した分散データベースのひとつとして位置づけられます)
  
+ ほとんどのACIDなリレーショナルデータベースで使用されている、強い一貫性(Strong 
Consistency)とは違い、CassandraはBASEスペクトラム(連続体)の片隅に位置します。(訳注:Cassandraは、NoSQLの文脈で語られるBASEの概念を適用した分散データベースのひとつとして位置づけられます)
+ 
+ 
- Cassandraの弱い一貫性(weak 
consistency)は、データベースが一貫性のある状態にいつか到達するという、イベンチュアルコンシステンシー(eventual 
consistency)の考えに基づいています。
+ Cassandraの弱い一貫性(Weak 
Consistency)は、データベースが一貫性のある状態にいつか到達するという、イベンチュアルコンシステンシー(Eventual 
Consistency)の考えに基づいています。
+ 
  
  
データがレプリケート(複製)されるにつれて、クラスタ上のいくつかのノードに最新バージョンが存在することになります。しかし古いバージョンの複製も他のノード上に、まだ存在することになります。しかし、いつかすべてのノードが最新バージョンとなることを理解してください。
- 
  
  
  More specifically:
@@ -214, +189 @@

  
  You get consistency if R + W > N, where R is the number of records to read, W 
is the number of records to write, and N is the replication factor.  A 
ConsistencyLevel of ONE means R or W is 1.  A ConsistencyLevel of QUORUM means 
R or W is ceiling((N+1)/2).  A ConsistencyLevel of ALL means R or W is N.  So 
if you want to write with a ConsistencyLevel of ONE and then get the same data 
when you read, you need to read with ConsistencyLevel ALL.
  
+ 
  Cassandra vs MySQL with 50GB of data
  
  

Reply via email to