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

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.ドキュメント






All Articles