एर्लैंग, कैसेंड्रा: पहला कदम

NoSQL समाधानों की समीक्षाओं और तुलनाओं को पढ़ते हुए, मैं अक्सर इस राय पर आता था कि कैसंड्रा को प्रलेखन के साथ समस्याएं थीं। जब मैं सिस्टम के आर्किटेक्चर और सीएलआई-कमांड्स से परिचित हो रहा था, प्रलेखन के साथ समस्या पुरानी लग रही थी। लेकिन एर्लांग में कुछ करने का पहला प्रयास तुरंत ही गोलगप्पे के लंबे घंटों के खिलाफ आया। इसके अनुसार, मेरी सुविधा के लिए, और न केवल मेरी आगे की श्रम गतिविधि के लिए, मैं एर्लांग में कैसेंड्रा के साथ बुनियादी संचालन पर एक सरल "कैसे" पोस्ट करता हूं।


1. रोमांच

एर्लांग में कैसेंड्रा के साथ काम करने के लिए, आपको इसके लिए एक थ्रिफ्ट क्लाइंट और कैसंड्रा सेवा की आवश्यकता है।
आप इस तरह Erlang के लिए Thrift ग्राहक प्राप्त कर सकते हैं:

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

इसके बाद, यहां से थ्रिफ्ट यूटिलिटी डाउनलोड करें: Thrift.apache.org और कैसेंड्रा सर्विस (विंडोज़) जेनरेट करें:

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

जहां इंटरफ़ेस / cassandra.thrift कैसंड्रा वितरण से थ्रिफ्ट फ़ाइल है।
अब हमारे पास कैसंड्रा के साथ काम करने की आवश्यकता है।

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 ]). 


थ्रिफ्ट एर्लांग ग्राहक प्रत्येक ऑपरेशन के बाद एक कनेक्शन देता है। यह पुनरावर्ती Erlang कॉल के लिए सुविधाजनक है। समझदार लोग एक बार थ्रिफ्ट_क्लायंट_टाइल द्वारा प्राप्त कनेक्शन का उपयोग करने की अनुशंसा नहीं करते हैं: नया ()। यहां क्‍यों देखें: http://stackoverflow.com/questions/10503907/cassandra-thrift-erlang-ineries
मैं प्रक्रियाओं के बीच संबंध को स्थानांतरित करने की अनुशंसा नहीं करता हूं।
यह याद दिलाना बाकी है कि कनेक्शन बंद होना चाहिए या एर्लांग प्रक्रिया पूरी हो गई है। यदि आप बहुत अधिक कनेक्शन खोलते हैं, तो एरलांग एक 'system_limit' त्रुटि लौटाएगा, जो इस मामले में इंगित करता है कि सिस्टम हैंडल की सीमा समाप्त हो गई है। प्रोसेस एक्सप्लोरर का उपयोग करके विंडोज़ में हैंडल की संख्या देखी जा सकती है।

सुपर कॉलम में प्रवेश:

 {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. 

जैसा कि आप देख सकते हैं, पढ़ने और लिखने पर कॉलम विनिर्देश अलग है। और थ्रिफ्ट क्लाइंट अपवादों का उपयोग करता है (एर्लांग के साथ मैं लगभग भूल गया कि यह क्या है)।

4. प्रलेखन

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


All Articles