カサンドラのアーラン:最初のステップ

NoSQLソリューションのレビューと比較を読んで、Cassandraがドキュメントに問題があるという意見にしばしば遭遇しました。 システムのアーキテクチャとCLIコマンドに精通していましたが、ドキュメントの問題は時代遅れに思えました。 しかし、アーランで何かをしようとする最初の試みはすぐにグーグルの長い時間に直面しました。 これによれば、私だけでなく自分のさらなる労働活動を促進するために、ErlangのCassandraでの基本的な操作に関する簡単な「方法」を投稿しています。


1. rif約

ErlangでCassandraを使用するには、ThriftクライアントとそのためのCassandraサービスが必要です。
次のようにして、ErlangのThriftクライアントを取得できます。

svn co svn.apache.org/repos/asf/thrift/trunk thrift

次に、 thrift.apache.orgからthriftユーティリティをダウンロードし、Cassandraサービス(Windows)を生成します。

thrift-0.8.0.exe --gen erl interface/cassandra.thrift

interface / cassandra.thriftは、Cassandraディストリビューションからのthriftファイルです。
これで、Cassandraで作業するために必要なものはすべて揃っています。

2.接続と記録

 -include("cassandra_thrift.hrl"). -include("cassandra_types.hrl"). * * * {ok, C}=thrift_client_util:new("localhost", 9160, cassandra_thrift,[{framed, true}]). {C1, _} = thrift_client:call(C, 'set_keyspace', ["my_keyspace"]). thrift_client:call(C1,'insert', ["00000001", #columnParent{column_family="myCF"}, #column{name="col_1",value="Hello World !", timestamp=0}, ?cassandra_ConsistencyLevel_ONE ]). 


Thrift Erlangクライアントは、各操作の後に接続を返します。 これは、再帰的なErlang呼び出しに便利です。 賢明な人は、thrift_client_util:new()で受信した接続を使用することをお勧めしません。 ここを見る理由: http : //stackoverflow.com/questions/10503907/cassandra-thrift-erlang-insert
プロセス間で接続を転送することはお勧めしません。
接続を閉じるか、Erlangプロセスを完了する必要があることを思い出してください。 あまりにも多くの接続を開くと、Erlangは「system_limit」エラーを返します。この場合、システムハンドルの制限が使い果たされたことを示します。 ウィンドウ内のハンドルの数は、Process Explorerを使用して表示できます。

スーパー列のエントリ:

 {C1, _} = thrift_client:call(Connect,'insert', [Mid, #columnParent{column_family=" cf_1 ", super_column = "col_A "}, #column{name="S",value= integer_to_list(MState), timestamp=0}, ?cassandra_ConsistencyLevel_ONE]) 


3.読書

 try thrift_client:call(Connect,'get',[Key, #columnPath{column_family="cf_1", super_column="col_A", column = "r"}, ?cassandra_ConsistencyLevel_ONE]) of {_C1,{ok,Val}} -> dosome() catch { _, {exception, {notFoundException} = Err}} -> doerr() end. 

ご覧のとおり、読み取りと書き込みでは列の仕様が異なります。 そして、Thriftクライアントは例外を使用します(Erlangでは、それが何であるかをほとんど忘れていました)。

4.ドキュメント

Source: https://habr.com/ru/post/J144689/


All Articles