Cassandra
8541 ワード
Javaで記述されていますが、データベースの名前と一致するように多くのプログラミング言語をサポートしています.Ruby,Perl,Python,Scala,Java,PHP,C#
ソーシャル・ネットワーク・サービスは、通常、データ間の複雑な関係を定義することなく、高容量と高性能を必要とするオブジェクトに使用されます.パフォーマンス、拡張性、信頼性のいずれも優れていますが、残念ながら、データ・センターを複数の国/地域にわたって独立して導入し、データ・センター間でデータを同期させる要件はサポートされていません.グローバルな範囲が必要な場合、MySQLベースの地理的レプリケーションとShardingは、現在最も広く使用されているアーキテクチャである可能性があります.
従来のリレーショナル・データベースとは異なる構造を持つ.まず,データモデルの概念を理解する.
1) Column
カラムは、カラム名と値からなるデータ構造体です.
{name: “emailAddress”, value:” [email protected] ”}
{name:”age” , value:”20”}
2) Column Family
コラムはコラムの集合です.リレーショナル・データベースのテーブルは考慮できますが、概念は少し異なります.違いは後述しますが、コラムチームにはROWを識別する鍵があります.1つの鍵に複数の柱がある形が柱族です.
例えば、Row
Cassandra = { emailAddress:”[[email protected]](mailto:[email protected])” , age:”20”}
どうけいCassandraはこの行のKeyとなり、emailAddressとageという2つの列があり、各列の値はそれぞれ「[email protected]」と「20」である.複数のRowを使用して、UserProfileというカラムファミリを表示します.
UserProfile={
Cassandra={ emailAddress:”[[email protected]](mailto:[email protected])” , age:”20”}
TerryCho= { emailAddress:”[[email protected]](mailto:[email protected])” , gender:”male”}
Cath= { emailAddress:”[[email protected]](mailto:[email protected])” , age:”20”,gender:”female”,address:”Seoul”}
}
形容できるここで注目すべき点は,Rowごとにデータパターンが異なることである.Cassandra RowはEmailAddressとageの2色、Terryがあります.ChoはEmailAddressと性別の2つのコラムを持っている.このように、カサンドラは道路ごとに異なる形式のデータアーキテクチャを持つことができ、この特徴を「無制約」と呼ぶ.(同じカラムファミリーでも、キーにバインドされたデータ構造は、キーごとに異なる場合があります.)3) KeySpace
KeySpaceは論理的にColumnFamilyの集合である.データ構造または関係にのみ影響します.
4) Super Column & Supper Column Family
前述したカラムでは、カラムの値は、StringやIntegerなどのプライバシーであってもよいし、カラム自体であってもよい.例えば、この構造.
{
name:”username”
value: firstname{name:”firstname”,value=”Terry”}
value: lastname{name:”lastname”,value=”Cho”}
}
usernameという名前の列にはfirstnameとlastnameという2つの列が含まれています.同様に、ColumnシリーズにもColumnシリーズのSuper構造を含めることができる.
UserList={
Cath:{
username:{firstname:”Cath”,lastname:”Yoon”}
address:{city:”Seoul”,postcode:”1234”}
}
Terry:{
username:{firstname:”Terry”,lastname:”Cho”}
account:{bank:”hana”,accounted:”1234”}
}
}
UserListという名前のColumnシリーズでは、各Cath Keyにusernameとaddressという名前のColumnシリーズ、TerryとAccountのColumnシリーズがあります.5) Data Model for Java Developer
Kasandraのデータ構造を簡単に紹介しましたが、Java開発者であればHashTableを思い出します.データモデルをHashTableと比較した結果、次のようになります.コードで言えば、次のような形になります.
Javaコードを使用して、前述のColumn Familyのデータ構造を表します.
UserProfile={
Cassandra={ emailAddress:”[[email protected]](mailto:[email protected])” , age:”20”}
TerryCho= { emailAddress:”[[email protected]](mailto:[email protected])” , gender:”male”}
Cath= { emailAddress:”[[email protected]](mailto:[email protected])” , age:”20”,gender:”female”,address:”Seoul”}
}
JAvaコードclass Keyspace{
HashTable keyspaces = new HashTable();
createColumnFamily(String name){
keyspaces.put(name,new HashTable);
}
putValue(String columnFamily,String key,Object value){
Hashtable cf = keyspaces.get(columnFamily);
cf.put(key,value);
}
}
class TerryVO{ // Terry is a Key
String emailAddress; // each column
String gender;
// setter & getter
}
class CathVO{ // Cath is a Key
String emailAddress;
String age;
String gender;
// setter & getter
}
KeySpace myspace;
myspace.createColumnFamily("UserProfile");
myspace.putValue("UserProfile","TerryCho",new TerryVO("[[email protected]](mailto:[email protected])","male");
myspace.putValue("UserProfile","Cath",new CathVO("[[email protected]](mailto:[email protected])","20","female");
Java開発者であれば、簡単に理解できるかもしれません.また、その構造を分析すると、Oracleのデータ・グリッド・ソリューションはCoherenceのデータ構造と非常に似ています.Reference
この問題について(Cassandra), 我々は、より多くの情報をここで見つけました https://velog.io/@insanezindol/Cassandraテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol