Apache Cassandra
Cassandra сургалт
засварлахCassandra нь Apache-ийн тархсан өгөгдлийн сан бөгөөд энэ нь маш их өргөтгөх боломжтой мөн маш их хэмжээний бүтэцлэгдсэн өгөгдлийг удирдахад зориулагдсан юм. Энэ нь алдаа гарч болох нэг ч цэггүйгээр хангагдсан.
Энэхүү сургалт нь Cassandra-ийн архитектур, суулгалт, чухал классууд болон интерфэйсийн үндсэн танилцуулгаас эхэлнэ. Үүний дараа CQLSH болон Java API ашиглан түлхүүр, хүснэгт, индекс зэргүүд дээр үүсгэх, өөрчлөх, шинэчлэх, устгах зэрэг үйлдлийг хэрхэн гүйцэтгэх талаар тайлбарлах болно. Энэхүү сургалт нь CQL-д байгаа өгөгдлийн төрөл, цуглуулгууд болон хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг хэрхэн ашиглах талаар тайлбар зориулалт бүхий бүлгүүдтэй.
Энэ сургалт нь Cassanda-ийн дадал хэвшилтэй болох мөн практик дээр хэрэгжүүлэх эрмэлзэлтэй програм хангамжийн мэргэжилтэнүүдэд маш их хэрэгтэй юм.
Шаардлага
Энэ сургалт нь маш энгийн бөгөөд Java програмчлалын үндсэн мэдлэгтэйгээр энд тайлбарлагдсан ойлголтуудыг амархан ойлгох боломжтой.
Cassandra - Танилцуулга
засварлахApache Cassandra нь маш их өргөтгөх боломжтой, олон төрлийн сервер дээр их хэмжээний өгөгдлийг удирдах зориулалттай өндөр үзүүлэлттэй тархсан өгөгдлийн сан бөгөөд алдаа гарч болох нэг ч цэггүйгээр хангагдсан юм. Энэ нь NoSQL өгөгдлийн саншийн нэг төрөл юм. NoSQL өгөгдлийн сан гэж юу вэ гэдэг ойлголтыг эхлээд үзье.
NoSQLDatabase
засварлахNoSQL өгөгдлийн сан (заримдаа Зөвхөн SQL Биш гэж нэрлэгддэг) нь өгөгдлийн хадгалах, сэргээх механизмаар хангагдсан харьцаа өгөгдлийн санд ашиглагддаг хүснэгтэн харицаанаас өөр өгөгдлийн сан юм. Эдгээр өгөгдлийн сангууд нь схемгүй, хялбар хуулбарлахыг дэмждэг, энгийн API-тэй эцэст нь тогтвортой мөн их хэмжээний өгөгдлийг удирдаг чаддаг.
NoSQL өгөгдлийн сангийн үндсэн зорилго нь
- Энгийн дизайн
- Хэвтээ хэмжээс
- Хүртээмжтэй байдлыг нарийн хянах
NoSQL өгөгдлийн сан нь харьцаа өгөгдлийн сантай харьцуулахад өөр өөр өгөгдлийн бүтцийг ашигладаг. Энэ нь NoSQL-д зарим үйл ажиллагааг хурдан гүйцэтгэдэг. NoSQL өгөгдлийн санг ашиглах нь шийдэх ёстой асуудлаас хамаардаг.
NoSQL vs Харьцаа өгөгдлийн сан
засварлахCassandra-аас гадна дараах NoSQL өгөгдлийн сангууд нь түгээмэл байдаг:
Apache HBase HBase нь нээлттэй эх, харилцан хамааралгүй, Google-ийн BigTable дараа загварчлагдсан тархсан өгөгдлийн сан өгөөд Java дээр бичигдсэн. Энэ нь Apache Hadoop төслийн нэг хэсэг болон хөгжүүлэгдсэн өгөөд HDFS-ийн дээр ажилладаг бөгөөд Hadoop-ийн BigTable-тэй төстэй боломжуудыг олгодог юм.
MongoDB MongoDB нь баримт бичиг баримтад чиглэгдсэн өгөгдлийн сангийн систем бөгөөд энэ нь уламжлалт хүснэгтэнд суурилсан өгөгдлийн сангийн бүтцээс зайлсхийсэн JSON-той адил динамиз схем бүхий баримтууд нь тодорхой төрлийн хэрэглээний өгөгдлийг нэгтгэх боломжийг илүү хурдан, хялбар болгодог.
Apache Cassandra гэж юу вэ?
засварлахApache Cassandra нь маг их хэмжээний бүтэцлэгдсэн өгөгдлийн удирдахад зориулагдсан дэлхий даяар тархсан нээлттэй эхийн, тархсан болон төвлөрсөн бус хадгалалтын систем(өгөгдлийн сан) юм. Энэ нь алдаа гарч болох нэг ч цэггүйгээр хангагдсан юм.
Доор дурдсан зүйлс нь Apache Cassandra-ийн онцлох зүйлүүд юм:
- Энэ нь өргөтгөх боломжтой, алдаанд тэсвэртэй, тогтвортой
- Энэ нь баганад чиглэсэн өгөгдлийн сан юм
- Түүний тархалтын загвар нь Amazon-ы Dynamo дээр суурилдаг мөн Google-ийн Bigtable дээрх өгөгдлийн загвар
- Facebook-д үүсгэгдсэн мөн энэ нь харьцаа өгөгдлийн сангийн удирдлагын системээс эрс ялгаатай
- Cassandra нь Dynamo загварын ямар ч алдаагүйгээр хуулбарлахыг хэрэгжүүлдэг гэхдээ илүү хүчирхэг “багана гэр бүл” өгөгдлийн загварыг нэмж өгсөн
- Cassandra-г Facebook, Twitter, Cisco, Rackspace, Ebay, Twitter, Netflix зэрэг олон томоохон компаниуд ашигладаг
Cassandra-ийн онцлог
засварлахCassandra нь маш гайхалтай технологийн онцлогоосоо болоод алдартай болсон юм. Cassandra-ийн зарим онцлогууд нь:
Налархай хуваарилалт - Cassandra нь маш сайн өргөтгөх боломжтой; энэ нь шаардлага болгонд илүү олон хэрэглэгчийг болон өгөгдөл байрлуулахад илүү олон төхөөрөмж нэмэх боломжийг олгодог.
Үргэлж архитектур дээр - Cassandra нь алдаа гарч болох нэг ч цэггүйгээр хангагдсан бөгөөд энэ нь алдаа гаргаж болохгүй бизнесийн чухал програмуудад үргэлж бэлэн байдаг.
Хурдан шугаман гүйцэтгэл - Cassandra нь шугаман хэмжээгээр өргөтгөх боломжтой өөрөөр хэлбэл энэ нь кластерийн тоонуудыг зангилааг ихэсгэх үед таны нэвтрүүлэх чадварыг нэмэгдүүлдэг. Тиймээс энэ нь хурдан хариу үйлдэл хийх цагийг хадгалж байдаг.
Уян хатан өгөгдөл хадгалалт - Cassandra нь бүх боломжит өгөгдлийн форматыг багтаадаг. Үүнд: бүтэцлэгдсэн, хагас бүтэцлэгдсэн мөн бүтэцлэгдээгүй. Энэ нь таны хэрэгцээний дагуу өгөгдлийн бүтцэд өөрчлөлтүүдийг динамикаар зохицуулж чадна.
Хялбар өгөгдөл хуваарилалт - Cassandra нь олон тооны өгөгдлийн төвүүдээр өгөгдлийг хуулбарлах замаар хэрэгцээтэй газраа түгээх уян хатан боломжийг олгодог.
Гүйлгээний дэмжлэг - Cassandra нь (Атомчлалтай, Нийцтэй байдал, Салангид мөн Эдэлгээ) зэрэг шинж чанаруудыг дэмждэг.
Хурдан бичилт - Cassandra нь хямд техник хангамж дээр ажиллахаар бүтээгдсэн. Энэ нь гайхалтай хурдан бичдэг болон уншилтын үр ашгийн алдагдалгүйгээр terabyte хэмжээний өгөгдлийг хадгалж чаддаг.
Cassandra-ийн түүх
засварлах- Cassandra нь inbox хайлт хийхээр Facebook-д хөгжүүлэгдсэн
- Энэ нь 2008 оны 7 сард Facebook-ээр нээлттэй эх болсон
- Cassandra нь 2009 оны 3 сард Apache Incubator-оор хүлээн зөвшөөрөгдсөн
- Энэ нь 2010 оны 2 сараас хойш Apache-ийн дээд түвшний төсөл болсон
Cassandra - Архитектур
засварлахCassandra-ийн загварчлалын зорилго нь их хэмжээний өгөгдлийн ачааллыг олон тооны зангилааны хооронд алдаа гарч болох нэг ч цэггүйгээр зохицуулагддаг. Cassandra нь зангилаануудын хооронд цэгээс цэгийн хооронд тархсан систем болон өгөгдөл нь кластер дахь бүх зангилаануудыг хооронд тархсан байдаг.
- Кластерийн зангилаа бүр нь ижил үүрэг гүйцэтгэдэг. Зангилаа бүр нь бие даасан байдаг болон нэг цагт бусад зангилаануудтай хоорондоо холбогддог
- Кластерийн зангилаа бүр нь өгөгдөл нь кластерт байрлаж байгаа эсэхээс үл хамааран унших болон бичих хүсэлтийг хүлээн авдаг
- Зангилаа нь унасан үед унших/бичих хүсэлтийг сүлжээний бусад зангилаанаас гүйцэтгэж болно
Cassandra-ийн өгөгдлийн хуулбар
засварлахCassandra нь кластерийн нэг буюу түүнээс олон тооны зангилааны өгөгдлийн ширхэг бүрийг хувилдаг. Хэрэв зарим нэг зангилаанууд нь хугацаа нь дууссан утгад хариу өгсөн нь илэрвэл Cassandra нь хамгийн сүүлийн утгыг клинт руу буцааж өгдөг. Хамгийн сүүлийн утгыг буцаасны дараа Cassandra нь хуучны утгыг шинэчлэхийн тулд арын засварын ажлыг хийдэг.
Тэмдэглэл - Cassandra нь зангилаанууд хоорондоо харилцах болон кластерийн алдаатай зангилаануудыг олоход Gossip Protocol-ийг ард нь ашигладаг.
Cassandra-ийн бүрэлдэхүүн хэсгүүд
засварлахCassandra-ийн гол бүрэлдэхүүн хэсгүүд нь дараах байдалтай байна:
- Зангилаа - Энэ нь өгөгдөл хадгалах газар
- Өгөгдлийн төв - Энэ нь холбогдох зангилаануудын цуглуулга
- Кластер - Кластер нь нэг болон хэд хэдэн өгөгдлийн төвийг агуулсан бүрэлдэхүүн хэсэг
- Бүртгэл - Бүртгэл нь Cassandra дахь сүйрэл-сэргээх механизм юм. Бүх бичилтийн үйлдэл нь бүртгэлд бүртгэгдэж байдаг
- Mem-хүснэгт - Mem-хүснэгт нь ой санамжийн байрлагчийн өгөгдлийн бүтэц юм. Бүртгэлийн дараа өгөгдөл нь mem-хүснэгт рүү бичигддэг. Зарим тохиолдолд нэг баганын гэр бүлийн хувьд олон mem-хүснэгтүүд байж болдог
- SSХүснэгт - Энэ нь контент нь хязгаараас давах үед mem-хүснэгтэд байгаа өгөгдлийг устгасан диск файл юм
- Bloom шүүлтүүр - Эдгээр нь элемент нь багцийн гишүүн эсэхийг турших хурдан, бусдаас ялгаатай, алгоритмууд юм. Энэ нь тусгай төрөл бүхий кэш юм. Bloom шүүлтүүрүүд нь query болгоны дараа ханддаг
Cassandra Query хэл
засварлахХэрэглэгч нь Cassandra Query хэл ашиглан зангилаануудаар дамжуулан Cassandra-д хандаж болно. CQL нь өгөгдлийн сантай хүснэгтүүдийн контейнерт ханддаг. Программистууд нь cqlsh-ийг ашигладаг: SQL-тэй ажиллахад шуурхай эсвэл аппликэйшний хэлний драйверийг тусгаарладаг.
Клинтүүд нь зангилаануудын аль нэг рүү тэдний унших-бичих үйл ажиллагаагар ханддаг. Зангилаа нь клинт болон өгөгдлийг агуулах зангилааны хоорон дахь проксигоор тоголдог.
Бичих үйл ажиллагаа Зангилааны бичих үйлдэл бүр нь зангилаанд бичигдсэн бүртгэлүүдээс олддог. Дараа нь өгөгдлийг mem-хүснэгтэнд хадгална. Mem-хүснэгт нь дүүрсэн бол өгөгдлийг SSХүснэгт өгөгдлийн файл руу бичнэ. Бүх бичилтүүд нь автоматаар хуваагдаж мөн кластерийн туршид хуулбарлагдана. Cassandra нь SSХүснэгтийг нэгтгэж, шаардлагагүй илүү өгөгдлийг хаядаг.
Унших үйл ажиллагаа Унших үйл ажиллагааны явцад Cassandra нь mem-хүснэгтийн утгыг авдаг бөгөөд шаардлагатай өгөгдлийг агуулж буй SSХүснэгтийг олохын тулд bloom шүүлтүүрийг шалгадаг.
Cassandra - Өгөгдлийн загвар
засварлахCassandra-ийн өгөгдлийн загвар нь бидний энгийнээр хардаг RDBMS-ээс мэдэгдэхүйц ялгаатай. Энэ бүлэгт Cassandra нь өгөгдлийг хэрхэн хадгалдаг талаарх тоймыг харуулсан.
Кластер
Cassandra өгөгдлийн сан нь хамтран ажилладаг хэд хэдэн машинууд дээр тархаж байрладаг. Контейнерийг кластер гэж нэрлэдэг. Алдаа дутагдалыг зохицуулахын тулд бүх зангилаа нь хуулбарыг агуулдаг бөгөөд алдаа гарсан тохиолдолд хуулбарыг цэнэглэдэг. Cassandra нь кластерийн зангилааг цагираган хэлбэрээр зохион байгуулж өгөгдлийг тэдэнд өгдөг.
Keyspace
Keyspace нь Cassandra-ийн хамгийн сайн контейнер юм. Cassandra-ийн Keyspace-ийн үндсэн шинж чанарууд нь:
Хуулбарлах фактор - Энэ нь кластерийн машин бүрийн тоо бөгөөд энэ нь ижил өгөгдлийн хуулбарыг хүлээж авдаг
Хуулбарлах байршлын стратеги - Энэ нь цагираган дахь хуулбаруудыг байрлуулах стратеги юм. Бид энгийн стратеги гэх мэт стратегиудтай (rack-aware strategy), хуучин сүлжээний топологийн стратеги(rack-aware strategy) мөн сүлжээний топологийн стратеги (төв цэг-хуваалцсан стратеги)
Багана гэр бүл - Keyspace нь нэг эсвэл хэд хэдэн баганын гэр бүлийн жагсаалтын агуулах юм. Баганын гэр бүл нь эргээд мөрийн цуглуулгын агуулах болдог. Мөр болгон нь эрэмбэлэгдсэн баганыг агуулдаг. Баганын гэр бүл нь таны өгөгдлийн бүтцийг илэрхийлж байдаг. Keyspace болгон нь хамгийн багадаа нэг ба олон баганын гэр бүлтэй байдаг
Keyspace үүсгэх бичиглэлт нь:
CREATE KEYSPACE Keyspace name WITH replication = {'class': 'SimpleStrategy', 'replication_factor'
Баганын гэр бүл
засварлахБаганын гэр бүл нь эрэмбэлэгдсэн мөрийн цуглуулгыг агуулж байдаг. Мөр болгон нь эргээд эрэмбэлэгдсэн багана юм. Доор үзүүлсэн хүснэгтэд харьцаа өгөгдлийн сангийн хүснэгт болон баганын гэр бүлийн ялгааг харуулж байна.
Relational Table | Cassandra column Family |
---|---|
Харьцаа загварын схем нь тогтоогдсон байдаг. Хүснэгтэд тодорхой багануудыг тодорхойлж өгөгдлийг оруулах үед мөр бүрт наад зах нь бүх утгыг null утгатайгаар бөглөсөн байх ёстой. | Cassandra-ийн хувьд баганын гэр бүлийг тодорхойлсон ч багана биш юм. Та ямар ч үед ямар ч баганыг ямар ч баганын гэр бүлд чөлөөтэйгээр нэмж болно. |
Харьцаа хүснэгт нь зөвхөн баганыг тодорхойлдог ба хэрэглэгч нь хүснэгтийг утгуудаар бөглөдөг. | Cassandra нь хүснэгтэд баганыг агуулдаг эсвэл супер баганын гэр бүл гэж тодорхойлдог |
Cassandra-ийн баганын гэр бүлийн шинж чанарууд:
keys_cached - Энэ нь SSХүснэгт бүрээр кэшийг хадгалах байршлын тоог илэрхийлдэг.
rows-cached - Энэ нь санах ойд бүхэлдээ кэшлэгдсэн контэнтийн мөрийн тоог илэрхийлдэг.
preload_row_cache - энэ нь мөрийн кэшийг урьдчилан байрлуулахыг хүсч байгаа эсэхийг тодорхойлно
Тэмдэглэл - Баганын гэр бүлийн схемийг засах боломжгүй харьцааа хүснэгтээс ялгаатай нь Cassandra нь мөрүүдийг бүх баганад байлгахыг шаарддаггүй.
Багана
засварлахCassandra-ийн үндсэн өгөгдлийн бүтэц нь тухайлбал түлхүүр эсвэл баганы нэр, утга мөн цагны тамга гэсэн 3 утгатай.
СуперБагана
засварлахСупер багана нь тусгай багана тиймээс энэ нь түлхүүр утга бүхий хос байна. Гэвч супер багана нь дэд баганы газрын зургийг хадгалдаг.
Ерөнхийдөө баганы гэр бүл нь бие даасан файлын дискэнд халгадагддаг. Тиймээс гүйцэтгэлийг оновчтой болгодог бөгөөд баганыг хадгалах нь чухал энэ нь ижил баганын гэр бүлтэй хамт хайлт хийх магадлалтай бөгөөд супер багана нь энд ашигтай байж болох юм.
Cassandra болон RDBMS-ийн өгөгдлийн загварууд
засварлахДоор үзүүлсэн хүснэгтэд Cassandra болон RDBMS-ийн ялгааг харуулж байна.
RDBMS | Cassandra |
---|---|
RDBMS нь бүтэцлэгдсэн өгөгдөлтэй. | Cassandra нь бүтэцлэгдсэн бус өгөгдөлтэй. |
Энэ нь тогтмол схетмэй байдаг. | Cassandra нь уян хатан схемтэй байдаг. |
RDBMS-ийн хүснэгт нь массивийн массив юм. (МӨР x БАГАНА) | Cassandra-д хүснэгт нь “хайрцаглагдсан түлхүүр-утгын хос”-ын жагсаалт юм. (МӨР x БАГАНЫН түлхүүр x БАГАНЫН утга) |
Өгөгдлийн сан нь аппликэйшнд хамаарах өгөгдөл агуулсан хамгийн том агуулах юм. | Keyspace нь аппликэйшнд хамаарах өгөгдөл агуулсан хамгийн том агуулах юм. |
Хүснэгт нь өгөгдлийн сангийн нэгж хэсэг юм. | Хүснэгтүүд эсвэл баганын гэр бүл нь keyspace-ийн нэгж хэсэг юм. |
Мөр нь RDBMS-ийн тусдаа бичлэг юм. | Мөр нь Cassandra-ийн хуулбарлах нэгж юм |
Багана нь харьцааны шинж чанарыг илэрхийлдэг. | Багана нь Cassandra-ийн хадгалалтын нэгж юм. |
RDBMS нь гадаад түлхүүр, join зэрэг концепцийг дэмждэг. | Харилцаа хамаарал нь цуглуулгуудын ашиглалтыг төлөөлдөг. |
Cassandra Installation
засварлахCassandra-г Линукс орчинд суулгахаасаа өмнө бид Linux-г ssh (Secure Shell) ашиглан суулгах шаардлагатай болно. Линукс орчинд тохируулахын тулд доор дурдсан алхмуудыг хийнэ үү
Хэрэглэгч үүсгэх
Эхлээд Hadoop-д зориулж Hadoop файлын системийг Unix файлын системээс тусгаарлаж тусд нь хэрэглэгч үүсгэж өгнө. Хэрэглэгч үүсгэхийн тулд доорх алхмуудыг дагана уу.
"su" командыг ашиглан нээж болно.
Хэрэглэгчээс хэрэглэгч "useradd username" гэсэн командаар үүсгэнэ. Одоо та хэрэглэгчийн бүртгэлийг "su username" гэсэн командаар нээж болно. Линукс терминалыг нээж, хэрэглэгчийг үүсгэхийн тулд дараах командыг бичнэ үү.
$ su password: useradd hadoop passwd hadoop New passwd: Retype new passwd
SSH тохиргоо , түлхүүр үүсгэх
SSH тохиргоо нь эхлүүлэх, зогсоох, тараах димон бүрхүүл ажиллуулах зэрэг хэсэг дээр өөр өөр үйлдлүүдийг гүйцэтгэхэд шаардагддаг. Hadoop-ийн өөр хэрэглэгчдийг баталгаажуулахын тулд Hadoop хэрэглэгчийн нийтийн / хувийн түлхүүр хосыг өгөх, өөр хэрэглэгчтэй хуваалцах шаардлагатай.
SSH ашиглан түлхүүр утгыг үүсгэхэд дараах командууд ашиглагддаг:
Нийтийн түлхүүрүүдийг id_rsa.pub-аас зөвшөөрөгдсөн түлхүүрийг хуулах Хэрэглэгчд санал болгох, Зөвшөөрөгдсөн түлхүүрийн файлыг тус тусд нь уншиж, бичих зөвшөөрлийг бичнэ.
$ ssh-keygen -t rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_key $ chmod 0600 ~/.ssh/authorized_keys
Ssh-г баталгаажуулах
ssh localhost
Java суулгах нь
Жава нь Cassandra-д чухал шаардлагатай юм. Юуны өмнө, доор дурдсан командаар Java системийг өөрийн систем дээр шалгаж үзэх хэрэгтэй:
$java -version
Бүгд хэвийн ажилладаг ба энэ нь танд дараах гаралтыг өгнө.
java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b13) Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
Хэрэв таны системд Жава байхгүй бол доорх алхмуудыг хийнэ үү
1-р алхам
Жава (JDK <хамгийн сүүлийн хувилбар> - X64.tar.gz) татаж авна уу.
Дараа нь jdk-7u71-linux-x64.tar.gz таны системд татагдах болно. 2-р алхам jdk-7u71-linux-x64.gz файлыг дараах командуудыг ашиглан задлана.
$ cd Downloads/ $ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz $ ls jdk1.7.0_71 jdk-7u71-linux-x64.gz
3-р алхам Жава-г бүх хэрэглэгчдэд хүргэхийн тулд үүнийг "/ usr / local /" рүү шилжих боломжтой. Үүнийг нээхдээ дараах командыг бичнэ үү
$ su password: mv jdk1.7.0_71 /usr/local/ exit
4-р алхам
PATH болон JAVA_HOME хувьсагчуудыг тохируулахдаа дараах командыг ~ / .bashrc файлд нэмнэ
export JAVA_HOME = /usr/local/jdk1.7.0_71 export PATH = $PATH:$JAVA_HOME/bin
Одоо ажиллаж байгаа системд бүх өөрчлөлтүүдийг оруулна.
$ source ~/.bashrc
5-р алхам
Жава хувилбаруудыг тохируулахын тулд дараах командуудыг ашиглана.
alternatives --install /usr/bin/java java usr/local/java/bin/java 2 alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2 alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2 alternatives --set java usr/local/java/bin/java alternatives --set javac usr/local/java/bin/javac alternatives --set jar usr/local/java/bin/jar
Одоо java -version командыг терминал дээр тайлбарласны дагуу ашиглана.
Замыг тохируулах
Cassandra замыг "/.bahrc" -д доор үзүүлэв.
[hadoop@linux ~]$ gedit ~/.bashrc export CASSANDRA_HOME = ~/cassandra export PATH = $PATH:$CASSANDRA_HOME/bin
Cassandra татах
Apache Cassandra-г Link Cassandra дээрээс дараах командыг ашиглан татаж авах боломжтой .
$ wget http://supergsego.com/apache/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz[permanent dead link]
Unzip Cassandra-г zxvf командыг ашиглан доор харуулав.
$ tar zxvf apache-cassandra-2.1.2-bin.tar.gz.
Татаж авсан файлыг Cassandra нэртэй шинэ сан үүсгээд доор татсан шиг татна
$ mkdir Cassandra $ mv apache-cassandra-2.1.2/* cassandra. Cassandra тохируулах
Cassandra bin файлын санд байх cassandra.yaml файлыг нээнэ үү:
$ gedit cassandra.yaml
Тэмдэглэл: Хэрэв та debla эсвэл rpm хуудаснаас Cassandra суулгасан бол тохиргооны файлууд нь байх болно
Cassandra-ийн / etc / cassandra санд байрладаг cassandra.yaml файлыг нээнэ. Дараах тохируулгыг шалгана уу.
Анхдагчаар эдгээр утгууд нь заасан сангууд руу тохируулагдана.
data_file_directories “/var/lib/cassandra/data” commitlog_directory “/var/lib/cassandra/commitlog” saved_caches_directory “/var/lib/cassandra/saved_caches”
Эдгээр сангууд байгаа бөгөөд доор үзүүлсэн шигээр бичиж болно.
Лавлах үүсгэх
Хэрэглэгчийн хувьд хоёр санг / var / lib / cassandra болон /var./lib/cassandra сан дотор үүсгэх хэрэгтэй.Cassandra өөрийн өгөгдлийг бичдэг.
Хавтасд зөвшөөрөл өгөх
[root@linux cassandra]# mkdir /var/lib/cassandra [root@linux cassandra]# mkdir /var/log/cassandra
Доор үзүүлсэн шиг шинээр үүсгэсэн хавтаст унших-бичих зөвшөөрлийг өгнө.
[root@linux /]# chmod 777 /var/lib/cassandra [root@linux /]# chmod 777 /var/log/cassandra
Cassandra эхлүүлэх
Cassandra-г эхлүүлэхийн тулд терминалын цонхыг нээхийн тулд Cassandra home directory / home руу залгах хэрэгтэй. Cassandra-г задалсан бөгөөд Cassandra-н сервер эхлүүлэхийн тулд дараах командыг ажиллуулаарай.
$ cd $CASSANDRA_HOME $./bin/cassandra -f
f тохируулгыг ашиглах нь Cassandra нүүрэн талд байрлахыг хэлдэг үйл явц юм. Бүх зүйл амжилттай болвол Cassandra серверийн эхлэлийг харж болно.
Програмчлалын орчин
Cassandra-н програмыг тохируулахын тулд дараах файлын файлуудыг татаж авах хэрэгтэй:
. slf4j-api-1.7.5.jar cassandra-driver-core-2.0.2.jar guava-16.0.1.jar metrics-core-3.0.2.jar netty-3.9.0.Final.jar
Тэдгээрийг тусдаа хавтсанд байрлуул. Жишээ нь, бид "Cassandrs” нэрлэсэн фолдерт татаж байна.
Энэ хавтсанд байгаа classpath-ийг ".bashrc" -д доор үзүүлсэн шиг тохируулна.
[hadoop@linux ~]$ gedit ~/.bashrc //Set the following class path in the .bashrc file. export CLASSPATH = $CLASSPATH:/home/hadoop/Cassandra_jars/*
Eclipse орчин
Eclipse нээгээд Cassandra _Examples нэртэй шинэ сан үүсгэнэ.Хавтасны баруун товчлуур дээр дарж, Build Path → Доор үзүүлсэн шиг Build Path-г тохируулна уу.Энэ нь шинж чанарын цонхыг нээнэ. Сангийн Libraries tab дотроос add External JARs орно. Jar файлыг хадгалсан сан руугаа шилжүүлнэ үү. 5 jar файлын форматыг сонгож доор үзүүлсэн шиг OK дарна уу. Дээрх Libraries дуудсаны дагуу дараах бүх шаардлагатай jar-г харж болно.
Cassandra хавтас нь maven ашиглан pom.xml өгсөн юм. <project xmlns = "http://maven.apache.org/POM/4.0.0[permanent dead link]" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0[permanent dead link] http://maven.apache.org/xsd/maven-4.0.0.xsd"> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version <configuration>
1.7
<target>1.7</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>16.0.1</version> </dependency> <dependency> <groupId>com.codahale.metrics</groupId> <artifactId>metrics-core</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty</artifactId> <version>3.9.0.Final</version> </dependency> </dependencies> </project>
−
Cassandra - Referenced Api
засварлахБүлэг
Энэ бүлэг нь үндсэн хөдөлгөгч үндсэн цэг юм. Энэ нь com.datastax.driver.core багц юм.
S.No | Ангиллын тайлбар |
---|---|
1 | Session connect() Энэ нь одоогийн кластер дээр шинэ горим үүсгэж түүнийг эхлүүлнэ. |
2 | void close() Энэ нь кластерийн жишээг хаахад хэрэглэгддэг. |
3 | static Cluster.Builder builder()шинэ кластер үүсгэхэд хэрэглэнэ. |
Cluster.Builder-Энэ хэсэг нь Cluster.Builder классыг илэрхийлэхэд хэрэглэгддэг.
S.No | Ангиллын тайлбар |
---|---|
1 | Cluster.Builder addContactPoint(String address) Энэ арга нь кластер руу харилцагчийг чиглүүлж нэмдэг. |
2 | Cluster build() Энэ арга нь кластерыг өгөгдсөн харилцах заагч байгуулдаг. |
Энэ интерфэйс нь Cassandra бүлгийн холболтыг агуулдаг. Энэ интерфэйсийг ашиглан та CQL хүсэлтийг гүйцэтгэж болно. Энэ нь com.datastax.driver.core багц юм.
S.No | Ангиллын тайлбар |
1 | void close() Энэ аргыг одоогийн горимг хаахад ашиглагддаг. |
2 | ResultSet execute(Statement statement)Энэ арга нь хайлтыг гүйцэтгэхэд ашиглагддаг. Энэ нь мэдэгдлийн объектыг шаарддаг. |
3 | ResultSet execute(String query)Энэ арга нь хайлтыг гүйцэтгэхэд ашиглагддаг. Энэ нь String объект хэлбэрээр асуулт явуулахыг шаарддаг. |
4 | PreparedStatement prepare(RegularStatement statement)Энэ арга нь өгсөн хайлтыг бэлддэг. Асуулт нь мэдэгдэл хэлбэртэй байна. |
5 | PreparedStatement prepare(String query)Энэ арга нь өгсөн хайлтыг бэлддэг. Хайлтыг String хэлбэрээр өгөх ёстой. |
Cassandra - Cqlsh
засварлахЭнэ бүлэг нь Cassandra хайлтын хэлийг танилцуулж түүний командуудыг хэрхэн ашиглахыг тайлбарладаг. Анхдагч байдлаар, Cassandra нь хэрэглэгчийн харилцах боломжийг олгодог Cassandra хайлтын хэлийг (cqlsh) түргэн шуурхай болгодог. Cassandra Query Language (CQL) -ийг ашиглан ажиллуулж болно. Та Cqlsh командыг ашиглах нь
схемийг тодорхойлж,
өгөгдөл оруулах, болон
хайлт хийх.
Cqlsh-ээс эхэлнэ
Cqlsh эхлэлүүлэхэд доор дурдсан шиг cqlsh командыг ашиглана. Энэ нь Cassandra cqlsh командыг гаралтын хэлбэрээр өгдөг.
[hadoop@linux bin]$ cqlsh Connected to Test Cluster at 127.0.0.1:9042. [cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3] Use HELP for help. cqlsh>
Cqlsh- Дээр тайлбарласны дагуу энэ команд нь cqlsh командыг эхлүүлэхэд хэрэглэгддэг. Үүнээс гадна, энэ нь бас хэд хэдэн сонголтуудыг дэмждэг. Дараах хүснэгт нь cqlsh болон тэдгээрийн хэрэглээний бүх тохиргоонуудыг тайлбарладаг
Сонголт | Хэрэглээ |
cqlsh --help | Cqlsh командын сонголтуудын талаар тусламжийн сэдвүүдийг үзүүлнэ. |
Cqlsh--vershion | Таны ашиглаж байгаа cqlsh хувилбарыг дурддаг. |
cqlsh –color | Өнгөт гаралтыг ашиглахын тулд бүрхүүлийг удирддаг. |
cqlsh --debug | Нэмэлт програмын тохируулганы мэдээллийг харуулна. |
cqlsh --execute | cql_statement CQL командыг хүлээн авч, ажиллуулахын тулд бүрхүүлийг удирддаг. |
cqlsh --file= “file name” | Хэрэв та энэ сонголтыг ашиглаж байгаа бол Cassandra-д өгөгдсөн файл болон гаралтын командыг ажиллуулна. |
cqlsh --no-color | Cassandra-д өнгөт гаралтыг ашиглахгүй байхыг заадаг. |
cqlsh -u “user name” | Энэ тохируулгыг ашиглахын тулд та хэрэглэгчийг шалгаж болно. Өгөгдмөл хэрэглэгчийн нэр нь: cassandra. |
cqlsh-p “pass word” | Энэ сонголтыг ашиглан та хэрэглэгчийг нууц үгээр баталгаажуулах боломжтой. Өгөгдмөл нууц үг нь: cassandrа |
Cqlsh команд
Cqlsh нь хэрэглэгчид тэдгээрийг харилцах боломжийг олгодог цөөн коммандтай байдаг. Дараах командууд байна.
Shell командуудыг баримтжуулах
Cqlsh-ийн баримтжуулсан бүрхүүлийн командуудыг доор өгөв. Эдгээр нь тусламжийн сэдвүүдийг үзүүлэх, жишээ нь cqlsh-аас гарах, тайлбарлах гэх мэт ажлуудыг гүйцэтгэхэд хэрэглэгддэг командууд юм.
- Help-Дүрслэл нь бүх cqlsh командуудад зориулсан сэдвүүдэд тусалдаг.
- CAPTURE-командын гаралтыг аваад файл руу нэмнэ.
- CONSISTENCY-Одоогийн тууштай байдлын түвшинг харуулах, эсвэл шинэ тогтвортой байдлын түвшинг тогтооно.
- COPY-Cassandra-ийн хуулбар болон өгөгдлийг хуулбарлах.
- DESCRIBE-Cassandra болон түүний объектуудын одоогийн классуудыг тайлбарладаг.
- EXPAND-Тухайн босоо чиглэлд хайлтын үр дүнг өргөтгөнө.
- EXIT - Энэ тушаалыг ашиглан cqlsh-г төгсгөж болно.
- PAGING - Хайлтын пейжийг идэвхжүүлж эсвэл идэвхгүй болгодог.
- SHOW - Cassandra хувилбар, хост буюу өгөгдлийн төрлийн таамаглал зэрэг одоогийн cqlsh горимын дэлгэрэнгүй мэдээллийг харуулна.
- SOURCE - CQL мэдэгдлүүд агуулсан файлыг ажиллуулдаг.
- TRACING - Хүсэлтийг дагахыг идэвхжүүлэх эсвэл идэвхгүй болгох.
CQL өгөгдлийн тодорхойлолтууд командууд
- GREATE KEYSPACE - Cassandra дээр KeySpace үүсгэдэг.
- USE - үүсгэсэн KeySpace-д холбогддог.
- ALTER KEYSPACE - KeySpace-ийн шинж чанаруудыг өөрчилдөг.
- DROP KEYSPACE - KeySpace устгах
- GREATE TABLE-Space дээр хүснэгт үүсгэх
- ALTER TABLE: Хүснэгтийн баганын шинж чанарыг өөрчилдөг.
- DROP table - хүснэгтийг устгах.
- TRUNCATE - Хүснэгтийн бүх өгөгдлийг устгана.
- INDEX үүсгэх - Хүснэгтийн нэг багана дээр шинэ индексийг тодорхойлно.
CQL өгөгдлийн командууд
- INSERT - Хүснэгтийн мөрөнд багана нэмэх
- UPDATE - Нэг мөрийн багануудыг шинэчилдэг.
- DELETE - Хүснэгтийн өгөгдлийг устгадаг.
- BATCH - Олон DML мэдэгдлийг нэгэн зэрэг гүйцэтгэдэг.
CQL заалтууд
- SELECT - Энэ бүлэг нь хүснэгтийн өгөгдлийг уншдаг
- WHERE - Энд тодорхой өгөгдлийг уншуулахын тулд хаана хэрэглэхийг заана.
- ORDERBY - Orderby заалтыг тодорхой дарааллаар тодорхой өгөгдлийг уншиж сонгохын хамт ашигладаг.
Cassandra - Shell Commands
засварлахCassandra нь CQL коммандаас гадна дүн шинжилгээний тушаалыг баримтжуулдаг. Доор дурдсанчлан Cassandra нь дараах командуудыг баримтжуулсан байна.
Туслах
HELP команд нь бүх cqlsh командуудын ерөнхий агуулга, товч тайлбарыг харуулна. Доорх бол тусламжийн командын хэрэглээ юм.
cqlsh> help Documented shell commands: =========================== CAPTURE COPY DESCRIBE EXPAND PAGING SOURCE CONSISTENCY DESC EXIT HELP SHOW TRACING. CQL help topics: ================ ALTER CREATE_TABLE_OPTIONS SELECT ALTER_ADD CREATE_TABLE_TYPES SELECT_COLUMNFAMILY ALTER_ALTER CREATE_USER SELECT_EXPR ALTER_DROP DELETE SELECT_LIMIT ALTER_RENAME DELETE_COLUMNS SELECT_TABLE
Capture
Энэ команд нь командын гаралтыг авч, файлд нэмнэ. Жишээ нь Outputfile нэртэй файл руу гаралтаа оруулаад дараах кодыг хараарай
cqlsh> CAPTURE '/home/hadoop/CassandraProgs/Outputfile'
Терминал доторх ямар ч команд бичиж байх үед өгөгдлийг өгсөн файлаар гаргана. Доор ашигласан команд болон гаралтын файлын хормын хувилбар юм.
cqlsh:tutorialspoint> select * from emp;
Та дараах командыг ашиглан барьж болно.
cqlsh:tutorialspoint> capture off;
Тогтвортой байдал
Энэ команд нь одоогийн тогтвортой байдлын түвшинг харуулж байгаа бөгөөд шинэ тогтвортой байдлын түвшинг тогтоодог.
qlsh:tutorialspoint> CONSISTENCY Current consistency level is 1.
Хуулах
Энэ команд нь Cassandra-аас өгөгдөлд файлыг хуулдаг. Доорх жишээнүүд нь файлын myfile-д өгсөн хоосон хүснэгтийг хуулах жишээ юм.
cqlsh:tutorialspoint> COPY emp (emp_id, emp_city, emp_name, emp_phone,emp_sal) TO ‘myfile’; 4 rows exported in 0.034 seconds.
Хэрвээ та файлаа нээж, шалгаж байвал доор үзүүлсэн шиг хуулбарыг олж болно.
Тайлбарлах
Энэ команд нь Cassandra-ийн одоогийн кластер болон түүний объектуудыг тайлбарлах болно. Энэ командын хувилбарыг доор тайлбарлав.
Кластерийг тайлбарлах - Энэ комманд кластерийн талаар мэдээлэл өгнө.
cqlsh:tutorialspoint> describe cluster; Cluster: Test Cluster Partitioner: Murmur3Partitioner Range ownership: -658380912249644557 [127.0.0.1] -2833890865268921414 [127.0.0.1] -6792159006375935836 [127.0.0.1]
Түлхүүр үгсийг тайлбарлах - Энэ команд нь кластер дахь бүх түлхүүрүүдийг жагсаадаг. Доор дурдсан командыг ашиглах болно.
cqlsh:tutorialspoint> describe keyspaces; system_traces system tp tutorialspoint
Хүснэгтийг тайлбарлах - Энэ команд нь бүх локал хүснэгтийг жагсаадаг. Доор дурдсан командыг ашиглах болно.
cqlsh:tutorialspoint> describe tables; emp
Хүснэгтийг тайлбарлах - Энэ команд нь хүснэгтийг тайлбарлах болно. Доор дурдсан командыг ашиглах болно.
cqlsh:tutorialspoint> describe table emp; CREATE TABLE tutorialspoint.emp ( emp_id int PRIMARY KEY, emp_city text, emp_name text, emp_phone varint, emp_sal varint ) WITH bloom_filter_fp_chance = 0.01 AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' AND comment = AND compaction = {'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32'} AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND dclocal_read_repair_chance = 0.1 AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair_chance = 0.0 AND speculative_retry = '99.0PERCENTILE'; CREATE INDEX emp_emp_sal_idx ON tutorialspoint.emp (emp_sal);
Төрөл тайлбарлах
Энэ команд нь хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг тодорхойлоход хэрэглэгддэг. Доор дурдсан командыг ашиглах болно.
cqlsh:tutorialspoint> describe type card_details; CREATE TYPE tutorialspoint.card_details ( num int, pin int, name text, cvv int, phone set<int>, mail text );
Зүйлээр тайлбарлах
Энэ команд нь хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг жагсаав. Доор дурдсан командыг ашиглах болно. Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлүүд байдаг гэж үзье: карт болон карт_details
cqlsh:tutorialspoint> DESCRIBE TYPES; card_details card
Өргөжүүлэлт хийх
Энэ тушаал нь гаралтыг өргөтгөхөд хэрэглэгддэг. Энэ командыг ашиглахаасаа өмнө өргөтгөх командыг идэвхжүүлэх хэрэгтэй. Доор дурдсан тушаалыг ашиглах болно.
cqlsh:tutorialspoint> expand on; cqlsh:tutorialspoint> select * from emp; @ Row 1 -----------+------------ emp_id | 1 emp_city | Hyderabad emp_name | ram emp_phone | 9848022338 emp_sal | 50000 @ Row 2 -----------+------------ emp_id | 2 emp_city | Delhi emp_name | robin emp_phone | 9848022339 emp_sal | 50000 @ Row 3 -----------+------------ emp_id | 4 emp_city | Pune emp_name | rajeev emp_phone | 9848022331 emp_sal | 30000 @ Row 4 -----------+----------- emp_id | 3 emp_city | Chennai emp_name | rahman emp_phone | 9848022330 emp_sal | 50000 (4 rows)
Тайлбар: Та өргөтгөсөн сонголтыг дараах командыг ашиглан унтрааж болно.
cqlsh:tutorialspoint> expand off; Disabled Expanded output.
Гарах
Энэ тушаал нь cql бүрхүүлийг зогсооход хэрэглэгддэг.
Нээх
Энэ команд нь Cassandra хувилбар, хост эсвэл өгөгдлийн төрлийн таамаглал зэрэг одоогийн cqlsh сессын мэдээллийг харуулна. Доор дурдсан командыг ашиглах болно.
cqlsh:tutorialspoint> show host; Connected to Test Cluster at 127.0.0.1:9042. cqlsh:tutorialspoint> show version; [cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
Эх сурвалж
Энэ командыг ашиглан та командуудыг файлд гүйцэтгэж болно. Манай оролтын файл дараах байдалтай байна:
Дараа нь доор дурдсан шиг командуудыг агуулсан файлыг ажиллуулж болно.
qlsh:tutorialspoint> source '/home/hadoop/CassandraProgs/inputfile'; emp_id | emp_city | emp_name | emp_phone | emp_sal --------+-----------+----------+------------+--------- 1 | Hyderabad | ram | 9848022338 | 50000 2 | Delhi | robin | 9848022339 | 50000 3 | Pune | rajeev | 9848022331 | 30000 4 | Chennai | rahman | 9848022330 | 50000
(4 rows)
Cassandra Keyspace үүсгэх
засварлахCqlsh ашиглан Keyspace үүсгэх
Cassandra-гийн үндсэн хэсгүүдийн нэг нь Зангилаанд өгөгдлийн хуулбарыг тодорхойлдог нэрсийн хэсэг юм. Кластер нь keyspace-ийн зангилаа бүрийг агуулна. CREATE KEYSPACE-ийг ашиглан keyspace үүсгэх аргыг доор харууллаа.
Синтакс:
CREATE KEYSPACE <identifier> WITH <properties>
CREATE KEYSPACE “KeySpace Name” WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’}; CREATE KEYSPACE “KeySpace Name” WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’} AND durable_writes = ‘Boolean value’;
CREATE KEYSPACE нь replication болон durable_writes гэсэн хоёр үндсэн шинж чанартай
1.Хуулбарлалт/ replication
Хуулбарлалт нь хуулбарлах байршилын стратеги ба хувилахыг хүссэн тоогоор тодорхойлогддог. Доорх хүснэгтэнд бүх хуулбарлах байршилын стратегыг харууллаа
Стратегын нэр | Тодорхойлолт |
---|---|
Энгийн стратеги | Кластерийн энгийн хуулбарлалтыг тодорхойлж зааж өгдөг |
Сүлжээний топологын стратеги | Энэхүү сонголтыг ашигласнаар бие даасан өгөгдлийн төв тус бүрийн хуулбарлах хүчин зүйлийг тохируулж болно. |
Хуучин сүлжээний топологын стратеги | Энэ бол хуулбарлах уламжлалт стратеги. |
Та нэ сонголтыг ашигласнаар commitlog update (шинэчлэлт)-ийг одоогын keyspace дээр хийж өгөхийг Cassandra-д зааж өгөх боломжтой ( KeySpace дээрхи шинэчлэлтүүдэд зориулсан атрибутыг ашиглана гэж Cassandra-д зааж өгнө)Энэ тохируулга заавал байх албагүй бөгөөд анхдагчаар үүнийг үнэн гэж зааж өгсөн байдаг.
Жишээ нь:
KeySpace үүсгэх жишээг доор харууллаа
- Энд бид TutorialsPoint нэртэй KeySpace үүсгэж байна.
- Бидний ашиглаж буй анхны хуулбарлах стратеги нь энгийн стратеги
- Мөн бид replication factor 1 хуулбарыг сонгож байна
· cqlsh.> CREATE KEYSPACE tutorialspoint · WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
Баталгаа
Та хүснэгт үүссэн эсэх эсвэл Describe командыг ашигласан эсэхийг шалгах бүрэн боломжтой. Хэрэв та энэ командыг keyspaces дээр ашиглавал доор үзүүлсэн шиг бүх үүссэн keyspaces-ийг харуулах болно.
cqlsh> DESCRIBE keyspaces; tutorialspoint system system_traces
tutorialspoint нэртэй Keyspace үүссэн байна.
2.Durable_writes
Хүснэгтийн durable_writes шинж чанаруудыг нь үнэн гэж тохируулсан байдаг. Гэвч бид үүнийг худал гэж тохируулж болно. Гэхдээ энэ шинж чанарыг энгийн стратеги тохируулж чадахгүй гэдгийг анхаарна уу.
Жишээ нь:
Доор үзүүлсэн жишээ нь durable_writes-ийн шинж чанарыг харуулж байна.
cqlsh> CREATE KEYSPACE test ... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 } ... AND DURABLE_WRITES = false;
Баталгаа
KeySpace-ийн testing хэсэг нь durable_writes шинж чанарыг системийн үндсэн keyspace-д худал, эсвэл үнэн алинаар нь зааж өгснийг шалгадаг.Энэ күэри нь танд KeySpaces-ийн бүх шинж чанаруудыг харуулна
cqlsh> SELECT * FROM system.schema_keyspaces; keyspace_name | durable_writes | strategy_class | strategy_options test | False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"} tutorialspoint | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "4"} system | True | org.apache.cassandra.locator.LocalStrategy | { } system_traces | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "2"} (4 rows)
Эндээс KeySpace тестийн durable_writes шинжийг худал гэж тохируулсан болох нь харагдаж байна.
Keyspace-ийг ашиглах
Та үүсгэсэн KeySpace-ыг USE гэсэн түлхүүр үгийн тусламжтайгаар ашиглаж болно. Түүний синтакс нь дараах байдалтай байна:
Syntax:USE <identifier>
Жишээ нь:
Дараах жишээн дээр бид Keyspace tutorialspoint-ийг ашиглалаа.
cqlsh> USE tutorialspoint; cqlsh:tutorialspoint>
Жава API -ийг ашиглана Keyspace үүсгэх
Та сэшион класс-ийн execute () аргыг ашиглан Keyspace үүсгэж болно. Java API ашиглан keyspace үүсгэхийн тулд доорх алхмуудыг дагана уу.
-Алхам 1: Кластер обектыг үүсгэх
Эхлээд com.datastax.driver.core багцын Cluster.builder class багцыг үүсгэнэ
//Creating Cluster.Builder object Cluster.Builder builder1 = Cluster.builder();
Кластерын addContactPoint () аргыг ашиглан харилцах цэг нэмнэ (зангилааны IP хаяг). Энэ арга нь Cluster.Builder-ийг буцаана
//Adding contact point to the Cluster.Builder object Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
Шинэ байгуулагч обектыг ашиглан кластерийн объект үүсгэх. Үүнийг хийхийн тулд cluster.builder классд build() хэмээх аргыг хэрэглэнэ. Дараах код нь кластерийн объектыг хэрхэн үүсгэхийг харуулж байна
//Building a cluster Cluster cluster = builder.build();
Кластерийн объектыг дор үзүүлсний дагуу нэг мөрөнд үүсгэж болно.
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Алхам 2: Session объект үүсгэх
Session объектыг доорх байдлаар кластерийн connect() аргыг ашиглан үүсгэж болно.
Session session = cluster.connect( );
Энэ арга нь шинэ session үүсгэж түүнийг эхлүүлнэ. Хэрэв та keyspace- тэй бол нэрийг нь стринг хэлбэрээр оруулна гэдгийг доор харууллаа
Session session = cluster.connect(“ Your keyspace name ” );
Алхам 3: Query хайх
Та Session классын execute() аргыг ашиглан SQL хайлтыг хийж болно.
Күэри нь стринг форматаар болон тайлбар классын обектоор хоёулангаар нь дамжиж байвал execute() аргыг ашиглана. Харин зөвхөн стринг форматаар дамжиж байвал хайлтыг SQLSH дээр хийж гүйцэтгэнэ.
Дараах жишээн дээр tp нэртэй KeySpace үүсгэж байна. Бид эхний хуулбарлалтаар энгийн стратегийг ашиглана, өөрөөр хэлбэл бид replication харьцаагаар 1 хуулбарыг сонгож авна.
Та хүсэлтийн хувьсагчдыг string хэлбэрээр хадгалж доор үзүүлсэн шиг execute() аргаар дамжуулна.
String query = "CREATE KEYSPACE tp WITH replication " + "= {'class':'SimpleStrategy', 'replication_factor':1}; "; session.execute(query);
Алхам4: KeySpace ашиглах
Та доор үзүүлсэнчлэн execute () method-ийг ашиглан KeySpace- үүсгэж болно
execute(“ USE tp ” );
Кассандра нь Java API ашиглан keyspace-ийг үүсгэх болон ашиглах програмыг доор харууллаа
import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Session; public class Create_KeySpace { public static void main(String args[]){ //Query String query = "CREATE KEYSPACE tp WITH replication " + "= {'class':'SimpleStrategy', 'replication_factor':1};"; //creating Cluster object Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); //Creating Session object Session session = cluster.connect(); //Executing the query session.execute(query); //using the KeySpace session.execute("USE tp"); System.out.println("Keyspace created"); } }
Дээрх програмын нэрийг .java өргөтгөлтэй нэр өгч хадгалаад байгаа байршилаас нь дуудаарай. Доор үзүүлсэн шиг програмыг эмхэтгэж, ажиллуулна.
$javac Create_KeySpace.java $java Create_KeySpace
Хэвийн нөхцөлд дараах үр дүн гарна
Keyspace created
Keyspace үүссэн байна.
Кассандра Keyspace-ийг засах
засварлахCqlsh-ийг ашиглана Keyspace-ийг засах
KEYSPACE Alter нь KeySpace-ийн хуулбарлах болон durable_writes зэрэг шинж чанаруудыг ашиглана засалт хийнэ. Энэ командын синтаксыг доор харууллаа.
Синтакс:
ALTER KEYSPACE <identifier> WITH <properties> ALTER KEYSPACE “KeySpace Name” WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’};
ALTER KEYSPACE-ийн шинж чанарууд нь CREATE KEYSPACE-ийн адилаар replication/хуулбарлах/ болон durable_writes гэсэн хоёр шинж чанартай.
Durable_writes
Та нэ сонголтыг ашигласнаар commitlog update (шинэчлэлт)-ийг одоогын keyspace дээр хийж өгөхийг Cassandra-д зааж өгнө ( KeySpace дээрхи шинэчлэлтүүдэд зориулсан атрибутыг ашиглана гэж Cassandra-д зааж өгнө)Энэ тохируулга заавал байх албагүй бөгөөд анхдагчаар үүнийг үнэн гэж зааж өгсөн байдаг
Жишээ нь
KeySpace-ийг өөрчлөх жишээг доор харууллаа
- Энд бид TutorialsPoint нэртэй KeySpace-ийг засаж байна.
- Бид репликацийн харьцааг 1-ээс 3 хүртэл өөрчилж байна
cqlsh.> ALTER KEYSPACE tutorialspoint WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};
Durable_writes-г өөрчлөх
KeySpace-ийг durablewrites шинж чанарыг ашиглана засаж болно. KeySpace-ийн durablewrites шинж чанарын туршилтыг доор үзүүлэв.
SELECT * FROM system.schema_keyspaces; keyspace_name | durable_writes | strategy_class | strategy_options test | False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"} tutorialspoint | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"} system | True | org.apache.cassandra.locator.LocalStrategy | { } system_traces | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"} (4 rows)
ALTER KEYSPACE test WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3} AND DURABLE_WRITES = true;
Дахин хэлэхэд KeySpaces-ийн шинж чанарыг шалгахад дараахь үр дүн гарна.
SELECT * FROM system.schema_keyspaces; keyspace_name | durable_writes | strategy_class | strategy_option test | True | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"} tutorialspoint | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"} system | True | org.apache.cassandra.locator.LocalStrategy | { system_traces | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}
Java API ашиглан Keyspace-г өөрчлөх
session класын execute () аргыг ашиглан keyspace-ийг өөрчилж болно. Жава API ашиглан Keyspace- ийг өөрчлөхийн тулд доорх алхмуудыг дагана уу.
Алхам 1: Кластер обектыг байгуулах
Эхлээд com.datastax.driver.core багцын Cluster.builder class багцыг үүсгэнэ үү.
//Creating Cluster.Builder object Cluster.Builder builder1 = Cluster.builder();
Кластерын addContactPoint () аргыг ашиглан харилцах цэг нэмнэ (зангилааны IP хаяг). Энэ арга нь Cluster.Builder-ийг буцаана
//Adding contact point to the Cluster.Builder object Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
Шинэ байгуулагч обектыг ашиглан кластерийн объект үүсгэх. Үүнийг хийхийн тулд cluster.builder классд build() хэмээх аргыг хэрэглэнэ. Дараах код нь кластерийн объектыг хэрхэн үүсгэхийг харуулж байна.
//Building a cluster Cluster cluster = builder.build();
Кластерийн объектыг доор үзүүлсний дагуу нэг мөрөнд үүсгэж болно.
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Алхам 2: Session Object үүсгэх
Session объектыг доорх байдлаар кластерийн connect () аргыг ашиглан үүсгэж болно.
Session session = cluster.connect( );
Энэ арга нь шинэ session үүсгэж түүнийг эхлүүлнэ. Хэрэв та keyspace- тэй бол нэрийг нь стринг хэлбэрээр оруулна гэдгийг доор харууллаа
Session session = cluster.connect(“ Your keyspace name ” );
Алхам 3: Query хайх
Та Session классын execute () аргыг ашиглан SQL хайлтыг хийж болно.
Күэри нь стринг форматаар болон тайлбар классын обектоор хоёулангаар нь дамжиж байвал execute() аргыг ашиглана. Харин зөвхөн стринг форматаар дамжиж байвал хайлтыг SQLSH дээр хийж гүйцэтгэнэ.
Энэ жишээнд
- Бид tp нэртэй keyspace-ийг өөрчлөх болно. Бид Энгийн Стратегийг Сүлжээний Топологийн Стратеги болгон өөрчлөх болно
- Бид Durable_writes-ийг нь худал гэж өөрчилнө.
Күэригээ стринг хэлбэрээр хадгалж, үүнийг execute() аргаар дамжуулахыг доор үзүүлэв.
//Query String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;"; session.execute(query);
Java API ашиглан Cassandra дахь keycpace-ийг үүсгэх болон ашиглах програмыг доор харууллаа.
import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Session; public class Alter_KeySpace { public static void main(String args[]){ //Query String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}" + "AND DURABLE_WRITES = false;"; //Creating Cluster object Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); //Creating Session object Session session = cluster.connect(); //Executing the query session.execute(query); System.out.println("Keyspace altered"); } }
Дээрх програмыг .java өргөтгөлтэй нэрээр хадгалаад дараа нь хадгалагдсан байрлалаас нь дуудна уу. Доор үзүүлсэн шиг хөрвүлэх програмыг ажиллуулна.
$javac Alter_KeySpace.java $java Alter_KeySpace
Хэвийн нөхцөлд дээрх үр дүн гарна
Кассандра- Keyspace-ийг устгах
засварлахCqlsh ашиглан Keyspace-ийг устгах
Та DROP KEYSPACE командыг ашиглан KeySpace-г устгаж болно. KeySpace-г устгах синтаксыг доор харууллаа.
Syntax
DROP KEYSPACE <identifier>
i.e.
DROP KEYSPACE “KeySpace name”
Жишээ
Tutorialpoint keyspace-ийг устгах кодыг үзүүллээ.
cqlsh> DROP KEYSPACE tutorialspoint;
Баталгаа
Keyspace-г засах мөн Describe команыг ашиглана хүснэгт устсан эсэхийг шалгаж байгааг харуулж байна.
cqlsh> DESCRIBE keyspaces; system system_traces
Бид keyspace tutorialspoint-ийг устгасны дараа keyspace жагсаалтыг олж болохгүй.
Java API ашиглан Keyspace-г устгах
Та сэшион класс-ийн execute () аргыг ашиглан Keyspac-г устгаж болно. Java API ашиглан keyspace устгахын тулд доорх алхмуудыг дагана уу.
Алхам1: Кластер обектыг үүсгэх
Эхлээд com.datastax.driver.core багцын Cluster.builder class багцыг үүсгэнэ
//Creating Cluster.Builder object Cluster.Builder builder1 = Cluster.builder();
Алхам 2: Session объект үүсгэх
Session объектыг доорх байдлаар кластерийн connect () аргыг ашиглан үүсгэж болно.
Session session = cluster.connect( );
Энэ арга нь шинэ session үүсгэж түүнийг эхлүүлнэ. Хэрэв та keyspace- тэй бол нэрийг нь стринг хэлбэрээр оруулна гэдгийг доор харууллаа
Session session = cluster.connect(“ Your keyspace name ” );
Алхам 3: Query хайх
Та Session классын execute () аргыг ашиглан SQL хайлтыг хийж болно.
Квэри нь стринг форматаар болон тайлбар классын обектоор хоёулангаар нь дамжиж байвал execute() аргыг ашиглана. Харин зөвхөн стринг форматаар дамжиж байвал хайлтыг SQLSH дээр хийж гүйцэтгэнэ.
Энэ жишээн дээр tp нэртэй KeySpace-г устгаж байна.
Та хүсэлтийн хувьсагчдыг string хэлбэрээр хадгалж доор үзүүлсэн шиг execute() аргаар дамжуулна.
String query = "DROP KEYSPACE tp; "; session.execute(query);
Кассандра нь Java API ашиглан keyspace-ийг устгах програмыг доор харууллаа
import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Session; public class Drop_KeySpace { public static void main(String args[]){ //Query String query = "Drop KEYSPACE tp"; //creating Cluster object Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); //Creating Session object Session session = cluster.connect(); //Executing the query session.execute(query); System.out.println("Keyspace deleted"); } }
Дээрх програмын нэрийг .java өргөтгөлтэй нэр өгч хадгалаад байгаа байршилаас нь дуудаарай. Доор үзүүлсэн шиг програмыг эмхэтгэж, ажиллуулна.
$javac Delete_KeySpace.java $java Delete_KeySpace
Хэвийн нөхцөлд дээрх үр дүн гарна.
− −
==Хүснэгт үүсгэ==
− Cqlsh ашиглан хүснэгт үүсгэх
− − Та CREATE TABLE командыг ашиглан хүснэгт үүсгэж болно. Доорх хүснэгтийг үүсгэх синтакс'''Syntax''' бол
− − --~~~~Синтакс
− − CREATE (TABLE | COLUMNFAMILY) <tablename>
− − ('<column-definition>' , '<column-definition>')
− − (WITH <option> AND <option>)
− − Багана тодорхойлох
− − Та доор үзүүлсэн шиг баганыг тодорхойлж болно.
− − column name1 data type,
− − column name2 data type,
− − example:
− − age int,
− − name text
− − Хүүхдийн түлхүүр
− − Анхдагч түлхүүр нь мөрийг танихад хэрэглэгддэг багана юм. Тиймээс хүснэгт үүсгэхдээ гол санааг тодорхойлох нь заавал байх ёстой. Анхны түлхүүр нь нэг буюу хэд хэдэн баганын баганаар хийгддэг. Та дор үзүүлсэн шиг хүснэгтийн үндсэн түлхүүрийг тодорхойлж болно.
− − CREATE TABLE tablename(
− −
column1 name datatype PRIMARYKEY,
− −
column2 name data type,
− −
column3 name data type.
− −
)
− − эсвэл
− − CREATE TABLE tablename(
− −
column1 name datatype PRIMARYKEY,
− −
column2 name data type,
− −
column3 name data type,
− −
PRIMARY KEY (column1)
− −
)
− − Жишээ нь:
− − Доорхи жишээнээс харахад cqlsh ашиглан Cassandra дахь хүснэгт үүсгэх жишээ юм. Бид энд байна:
− − .Зааварчилгааны түлхүүр үг ашиглах
− − .Цонх гэж нэрлэгдсэн хүснэгт үүсгэх
− − Энэ нь ажилтны нэр, дугаар, хот, цалин, утасны дугаар гэх мэт дэлгэрэнгүй мэдээллийг агуулсан болно. Ажилчдын ID бол үндсэн түлхүүр юм.
− − cqlsh> USE tutorialspoint;
− − cqlsh:tutorialspoint>; CREATE TABLE emp(
− −
emp_id int PRIMARY KEY,
− −
emp_name text,
− −
emp_city text,
− −
emp_sal varint,
− −
emp_phone varint
− −
);
− − Баталгаажуулалт
− − Сонгогдсон мэдэгдэл танд схемийг өгөх болно. Доор харуулсан шиг сонгогдсон мэдэгдлийг ашиглан хүснэгтийг шалгана уу.
− − cqlsh:tutorialspoint> select * from emp;
− −
emp_id | emp_city | emp_name | emp_phone | emp_sal
− − --------+----------+----------+-----------+---------
− − (0 rows)
− − Орчуулах
− − Here you can observe the table created with the given columns. Since we have deleted the keyspace tutorialspoint, you will not find it in the keyspaces list.
− − Creating a Table using Java API
− − You can create a table using the execute() method of Session class. Follow the steps given below to create a table using Java API.
− − Энд байгаа багануудтай үүсгэсэн хүснэгтийг ажиглаж болно. Бид зааж өгсөн түлхүүр үгнүүдийг устгасан тул та түлхүүрүүдийг жагсаалтад оруулахгүй.
− − Java API ашиглан Хүснэгт үүсгэх
− − Та хичээл ангийн execute () аргыг ашиглан хүснэгт үүсгэж болно. Java API ашиглан хүснэгт үүсгэхийн тулд доорх алхмуудыг дагана уу.
− − Алхам1: Бүлгийн бүлгийг үүсгэх
− − Юуны өмнө, доор үзүүлсэн шиг com.datastax.driver.core багцын Cluster.builder class багцыг үүсгэ.
− − //Creating Cluster.Builder object
− − Cluster.Builder builder1 = Cluster.builder();
− − Кластерын addContactPoint () аргыг ашиглан холбоо барих цэг (цэгийн IP хаяг) нэмнэ. Энэ арга нь Cluster.Builder-ийг буцаана.
− − //Adding contact point to the Cluster.Builder object
− − Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
− − Шинэ бүтээх объектыг ашиглан кластерийн объект үүсгэнэ. Үүнийг хийхийн тулд кластерт бий болгох бүтээлд () бий. Дараах код нь кластерийн объектыг хэрхэн үүсгэхийг харуулж байна.
− − //Building a cluster
− − Cluster cluster = builder.build();
− − Кластерийн объектыг дор үзүүлсний дагуу нэг мөр кодыг ашиглан үүсгэж болно.
− − Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
− − Алхам 2: Session Object үүсгэнэ үү
− − Бүлгийн объектыг доор үзүүлсэн шиг кластерийн холболтын () аргыг ашиглан үүсгэнэ.
− − Session session = cluster.connect( );
− − Энэ арга нь шинэ сесс үүсгэж түүнийг эхлүүлнэ. Хэрвээ та аль хэдийнээ зайтай байгаа бол, үүнийг доорх байдлаар харуулсан форматыг ашиглана.
− − Session session = cluster.connect(“ Your keyspace name ” );
− − Энд бид tp нэртэй түлхүүр зай ашигладаг. Тиймээс доор үзүүлсэн шиг сесс объектыг үүсгэ.
− − Session session = cluster.connect(“ tp” );
− − Алхам 3: Query хайх
− − Та CQL хайлтыг Session классын execute () аргыг ашиглан гүйцэтгэж болно. Хайлтын мөрийг форматаар эсвэл Тайлбар ангийн объектыг гүйцэтгэх () аргыг ашиглаж болно. Хэрвээ та энэ арганд энэ аргыг ашигласан бол cqlsh дээр ажиллуулна.
− − Дараах жишээнд бид нэртэй хүснэгт үүсгэж байна. Та хүсэлтийг string хувьсагчид хадгалж доор үзүүлсэн шиг гүйцэтгэх () аргаар үүнийг дамжуулна.
− − //Query
− − String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
− −
+ "emp_name text, "
− −
+ "emp_city text, "
− −
+ "emp_sal varint, "
− −
+ "emp_phone varint );";
− − session.execute(query);
− − Доорх нь Java API ашиглан Cassandra дахь түлхүүр талбарыг үүсгэх, ашиглах бүрэн програм юм.
− − import com.datastax.driver.core.Cluster;
− − import com.datastax.driver.core.Session;
− − public class Create_Table {
− −
public static void main(String args[]){
− −
//Query
− −
String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
− −
+ "emp_name text, "
− −
+ "emp_city text, "
− −
+ "emp_sal varint, "
− −
+ "emp_phone varint );";
− −
//Creating Cluster object
− −
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
− −
//Creating Session object
− −
Session session = cluster.connect("tp");
− −
//Executing the query
− −
session.execute(query);
− −
System.out.println("Table created");
− −
}
− − }
− − Дээрх програмыг клиентийн нэрээр хадгалаад дараа нь .java хадгалж байгаа байршлаасаа хайгаарай. Доор үзүүлсэн шиг програмыг эмхэтгэж, ажиллуулна.
− − $javac Create_Table.java
− − $java Create_Table
− − Хэвийн нөхцөлд дараах үр дүн гарна:
− − Table created
− −
== '''Кассандра-Өөрчлөлт Хүснэгт''' ==
− Cqlsh ашиглан хүснэгтийг өөрчлөх нь
− − Та ALTER TABLE командыг ашиглан хүснэгтийг өөрчилж болно. Доорх хүснэгтийг үүсгэх синтакс бол
− − Syntax
− − ALTER (TABLE | COLUMNFAMILY) <tablename> <instruction>
− − ALTER командыг ашиглан та дараах үйлдлүүдийг хийж болно:
− − Багана нэмэх
− − Багана хая
− − Багана нэмэх
− − ALTER командыг ашиглан та баганыг хүснэгтэд нэмэх боломжтой. Багана нэмэх үед баганын нэр нь одоо байгаа баганын нэртэй зөрчилдөхгүй бөгөөд хүснэгтийг компакт хадгалалтын сонголтоор тодорхойлоогүй гэдгийг анхаарах хэрэгтэй. Доорхи хүснэгтэд баганыг нэмэх синтакс байна.
− − ALTER TABLE table name
− − ADD new column datatype;
− − Жишээ нь
− − Доорхи жишээнд үзүүлсэн багананд багана нэмэх жишээ байна. Энд бид текст өгөгдлийн emp_email нэртэй багана-д emp гэж нэрлэгдсэн хүснэгтэд нэмэх болно.
− − cqlsh:tutorialspoint> ALTER TABLE emp
− −
... ADD emp_email text;
− − Баталгаажуулалт
− − Багана нэмэгдсэн эсэхийг магадлахын тулд SELECT мэдэгдлийг ашиглана уу. Энд шинээр нэмсэн баганад emp_email ажиглаж болно.
− − cqlsh:tutorialspoint> select * from emp;
− −
emp_id | emp_city | emp_email | emp_name | emp_phone | emp_sal
− − --------+----------+-----------+----------+-----------+---------
− − Emp_email багана устгагдсан болохоор та үүнийг дахиж олохгүй.
− − Java API ашиглан Хүснэгтийг өөрчлөх нь
− − Та хичээл ангийн execute () аргыг ашиглан хүснэгт үүсгэж болно. Java API ашиглан хүснэгтийг өөрчлөхийн тулд доорх алхмуудыг дагана уу.
− − Алхам1: Бүлгийн бүлгийг үүсгэх
− − Юуны өмнө, доор үзүүлсэн шиг com.datastax.driver.core багцын Cluster.builder class-ийн жишээг үүсгэ.
− − //Creating Cluster.Builder object
− − Cluster.Builder builder1 = Cluster.builder();
− − Кластерын addContactPoint () аргыг ашиглан холбоо барих цэг (цэгийн IP хаяг) нэмнэ. Энэ арга нь Cluster.Builder-ийг буцаана.
− − //Adding contact point to the Cluster.Builder object
− − Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
− − Шинэ бүтээх объектыг ашиглан кластерийн объект үүсгэнэ. Үүнийг хийхийн тулд кластерт бий болгох бүтээлд () бий. Дараах код нь кластерийн объектыг хэрхэн үүсгэхийг харуулж байна.
− − //Building a cluster
− − Cluster cluster = builder.build();
− − Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
− − Алхам 2: Session Object үүсгэнэ үү
− − Бүлгийн объектыг доор үзүүлсэн шиг кластерийн холболтын () аргыг ашиглан үүсгэнэ.
− − Session session = cluster.connect( );
− − Энэ арга нь шинэ сесс үүсгэж түүнийг эхлүүлнэ. Хэрэв та аль хэдийн түлхүүр зайтай бол, үүнийг доорх байдлаар харуулсан форматаар KeySpace нэрийг string хэлбэрээр дамжуулж өгч болно.
− − ession session = cluster.connect(“ Your keyspace name ” );
− − Session session = cluster.connect(“ tp” );
− − Энд бид tp нэртэй KeySpace ашиглаж байна. Тиймээс доор үзүүлсэн шиг сесс объектыг үүсгэ.
− − Алхам 3: Query хайх
− − Та CQL хайлтыг Session классын execute () аргыг ашиглан гүйцэтгэж болно. Хайлтын мөрийг форматаар эсвэл Тайлбар ангийн объектыг гүйцэтгэх () аргыг ашиглаж болно. Хэрвээ та энэ арганд энэ аргыг ашигласан бол cqlsh дээр ажиллуулна.
− − Дараах жишээнд бид баганыг хоосон хүснэгтэнд нэмнэ. Үүнийг хийхийн тулд та асуулгыг хувьсагчийн мөрөнд хадгалж доор үзүүлсэн шиг гүйцэтгэх () аргаар үүнийг дамжуулна.
− − //Query
− − String query1 = "ALTER TABLE emp ADD emp_email text";
− − session.execute(query);
− − Доорхи хүснэгтэд баганыг нэмэх бүрэн програм юм.
− − import com.datastax.driver.core.Cluster;
− − import com.datastax.driver.core.Session;
− − public class Add_column {
− −
public static void main(String args[]){
− −
//Query
− −
String query = "ALTER TABLE emp ADD emp_email text";
− −
//Creating Cluster object
− −
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
− −
//Creating Session object
− −
Session session = cluster.connect("tp");
− −
//Executing the query
− −
session.execute(query);
− −
System.out.println("Column added");
− −
}
− − }
− − Дээрх програмыг клиентийн нэрээр хадгалаад дараа нь .java хадгалж байгаа байршлаасаа хайгаарай. Доор үзүүлсэн шиг програмыг эмхэтгэж, ажиллуулна.
− − $javac Add_Column.java
− − $java Add_Column
− − Хэвийн нөхцөлд дараах үр дүн гарна:
− − Column added
− − Багана устгах
− − Доорхи хүснэгтэд байгаа баганыг устгах бүрэн програмыг хэлнэ.
− − import com.datastax.driver.core.Cluster;
− − import com.datastax.driver.core.Session;
− − public class Delete_Column {
− −
public static void main(String args[]){
− −
//Query
− −
String query = "ALTER TABLE emp DROP emp_email;";
− −
//Creating Cluster object
− −
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
− −
//Creating Session object
− −
Session session = cluster.connect("tp");
− −
//executing the query
− −
session.execute(query);
− −
System.out.println("Column deleted");
− −
}
− −
}
− − Дээрх програмыг клиентийн нэрээр хадгалаад дараа нь .java хадгалж байгаа байршлаасаа хайгаарай. Доор үзүүлсэн шиг програмыг эмхэтгэж, ажиллуулна.
− − $javac Delete_Column.java
− − $java Delete_Column
− − Хэвийн нөхцөлд дараах үр дүн гарна:
− − Column deleted
− −
== '''Кассандра-Устгах хүснэгт''' ==
− Cqlsh ашиглан хүснэгтийг буулгана
− − Та дугаарын хүснэгтийг ашиглан хүснэгтийг унагаж болно. Түүний синтакс нь дараах байдалтай байна:
− − Syntax
− − DROP TABLE <tablename>
− − Жишээ нь
− − Дараах код нь одоо байгаа хүснэгтийг KeySpace-с оруулдаг.
− − cqlsh:tutorialspoint> DROP TABLE emp;
− − Баталгаажуулалт
− − Бичгийн командыг ашиглан хүснэгт устгагдсан эсэхийг шалгана уу. Эм хүснэгтийг устгасан тул багануудын гэр бүлийн жагсаалтад үүнийг олохгүй.
− − cqlsh:tutorialspoint> DESCRIBE COLUMNFAMILIES;
− − employee
− − Java API ашиглан Хүснэгтийг устгах нь
− − Та хичээл ангийн execute () аргыг ашиглан хүснэгтийг устгаж болно. Java API ашиглан хүснэгтийг устгахын тулд доорх алхмуудыг дагана уу.
− − Алхам1: Бүлгийн бүлгийг үүсгэх
− − Юуны өмнө com.datastax.driver.core багцын Cluster.builder class багцыг доор үзүүлэв:
− − //Creating Cluster.Builder object
− − Cluster.Builder builder1 = Cluster.builder();
− − Кластерын addContactPoint () аргыг ашиглан холбоо барих цэг (цэгийн IP хаяг) нэмнэ. Энэ арга нь Cluster.Builder-ийг буцаана.
− − //Adding contact point to the Cluster.Builder object
− − Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
− − Using the new builder object, create a cluster object. To do so, you have a method called build() in the Cluster.Builder class. The following code shows how to create a cluster object.
− − //Building a cluster
− − Cluster cluster = builder.build();
− − Кластерийн объектыг дор үзүүлсний дагуу нэг мөр кодыг ашиглан үүсгэж болно.
− − Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
− − Алхам 2: Session Object үүсгэнэ үү
− − Бүлгийн объектыг доор үзүүлсэн шиг кластерийн холболтын () аргыг ашиглан үүсгэнэ.
− − Session session = cluster.connect( );
− − Энэ арга нь шинэ сесс үүсгэж түүнийг эхлүүлнэ. Хэрэв та аль хэдийн түлхүүр зайтай бол, үүнийг доорх байдлаар харуулсан форматаар KeySpace нэрийг string хэлбэрээр дамжуулж өгч болно.
− − Session session = cluster.connect(“Your keyspace name”);
− − Энд бид tp нэртэй түлхүүр зай ашигладаг. Тиймээс доор үзүүлсэн шиг сесс объектыг үүсгэ.
− − Session session = cluster.connect(“tp”);
− − Алхам 3: Query хайх
− − Та CQL асуулгуудыг execute () Session class аргыг ашиглан гүйцэтгэж болно. Хайлтын мөрийг форматаар эсвэл Тайлбар ангийн объектыг гүйцэтгэх () аргыг ашиглаж болно. Хэрвээ та энэ арганд энэ аргыг ашигласан бол cqlsh дээр ажиллуулна.
− − Дараах жишээнд бид нэртэй хүснэгтийг устгаж байна. Та хүсэлтийг string хувьсагчид хадгалж доор үзүүлсэн шиг гүйцэтгэх () аргаар үүнийг дамжуулна.
− − // Query
− − String query = "DROP TABLE emp1;”;
− − session.execute(query);
− − Доорх нь Java API ашиглан Кассандра дахь хүснэгтийг унагаах бүрэн програм юм.
− − import com.datastax.driver.core.Cluster;
− − import com.datastax.driver.core.Session;
− − public class Drop_Table {
− −
public static void main(String args[]){
− −
//Query
− −
String query = "DROP TABLE emp1;";
− −
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
− −
//Creating Session object
− −
Session session = cluster.connect("tp");
− −
//Executing the query
− −
session.execute(query);
− −
System.out.println("Table dropped");
− −
}
− − }
− − Дээрх програмыг клиентийн нэрээр хадгалаад дараа нь .java хадгалж байгаа байршлаасаа хайгаарай. Доор үзүүлсэн шиг програмыг эмхэтгэж, ажиллуулна.
− − $javac Drop_Table.java
− − $java Drop_Table
− − Хэвийн нөхцөлд дараахь үр дүн гарна:
− − Table dropped
−
Кассандра CQL Төрөл
засварлахКассандра- CQL Өгөгдөл
CQL нь цуглуулгын төрлүүд гэх мэт төрөл бүрийн өгөгдлийн төрөл агуулсан байдаг. Эдгээр өгөгдлийн төрлүүдтэй зэрэгцэн хэрэглэгчид өөрсдийн тусгай өгөгдлийн төрөл үүсгэж болно. Дараах хүснэгтэд CQL-д байгаа төрөл бүрийн өгөгдлийн төрлийн жагсаалтыг харуулав
Өгөгдлийн төрөл | Тогтмол | Тайлбар |
---|---|---|
Ascii | Strings | ASCII тэмдэгт мөрийг төлөөлнө |
Bigint | Bigint | 64 битийн уртыг тэмдэглэсэн |
Blob | Blobs | Энэ нь дурын байтыг төлөөлнө |
Boolean | Booleans | Үнэн эсвэл худал гэдгийг илэрхийлнэ |
Counter | Integers | Баганын баганыг төлөөлнө |
Decimal | Integers,floats | Хувьсах-нарийвчлалын аравтын бутархайг төлөөлнө |
Double | Integers | 64-битийн IEEE-754 хөвөгч цэгийг төлөөлнө |
Float | Integers,float | 32-битийн IEEE-754 хөвөгч цэгийг төлөөлнө |
Inet | Strings | IP хаяг,IPv4 эсвэл IPv6 гэж нэрлэнэ |
Int | Integers | 32-бит гарын үсэг зурсан |
Example | Example | UTF8 кодчилогдсон мөрийг төлөөлнө |
Timestamp | Integers,strings | Цаг хугацаа төлөөлнө |
Timeuuid | Uuids | Төрөл 1 UUID-г төлөөлнө |
Uuid | Uuids | Төрөл 1 эсвэл төрөл 4-г оруулна |
UUID | ||
Varchar | Strings | UTF8 кодлогдсон тэмдэгтийг илэрхийлнэ |
Varint | Integers | Бүх дурын нарийвчлалтай бүхэл тоог илэрхийлнэ |
Цуглуулгын төрөл
Cassandra Query Language нь цуглуулгын өгөгдлийн төрлийг агуулдаг. Дараах хүснэгтэд CQL дэх цуглуулгуудын жагсаалтыг харуулав.
Цуглуулга | Тайлбар |
---|---|
Жагсаалт | Жагсаалт нь нэг буюу хэд хэдэн захиалсан элементүүдийн цуглуулга юм |
Зураг | Газрын зураг нь түлхүүр-хосын цуглуулга юм |
Тохируулах | Багц нь нэг буюу хэд хэдэн элементүүдийн цуглуулга юм |
Хэрэглэгчийн тодорхойлсон өгөгдлийн төрөл:
Cqlsh нь хэрэглэгчид өөрийн өгөгдлийн төрлийг бий болгох боломжийг олгодог. Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлүүдийг ашиглахад хэрэглэгддэг тушаалуудыг доор өгөв
• CREATE TYPE - Хэрэглэгчийн тодорхойлсон өгөгдлийн сан үүсгэнэ
• ALTER TYPE - Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг өөрчлөх.
• DROP TYPE - Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг бууруулдаг.
• DESCRIBE TYPE - Хэрэглэгчийн тодорхойлсон өгөгдлийн төpлийг тодорхойлно.
• DESCRIBE TYPES - Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг тодорхойлно.
Кассандра-CQL цуглуулгууд
засварлахCQL цуглуулга өгөгдлийн төрлийг ашиглах боломжийг олгодог. Эдгээр цуглуулгаийг ашиглахдаа олон утгыг нэг хувьсагчид хадгалж болно. Энэ бүлэгт Cassandra дахь цуглуулгуудыг хэрхэн ашиглах талаар тайлбарлана
Жагсаалт
Энд байгаа жагсаалтад жагсаалтыг ашигладаг
- элементийн дарааллыг хадгалах,
- утга нь олон удаа хадгалагдах болно
Жагсаалтын өгөгдлийн төрлүүдийн утгыг жагсаалт дахь элементүүдийн индекс ашиглан авч болно.
Жагсаалттай хүснэгтийг үүсгэх
Доорх жишээнээс жишээ авъя гэвэл хоёр багана, нэр, и-мэйлээр жишээ авъя. Олон и-мэйл хадгалахын тулд бид жагсаалтыг ашиглаж байна
cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);
Жагсаалтад өгөгдөл оруулах
Жагсаалт дахь элементүүдэд өгөгдөл оруулахдаа квадрат хаалтанд [] доор харуулагдсан бүх утгыг оруул.
cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu', ['abc@gmail.com','cba@yahoo.com'])
Жагсаалтыг шинэчилж байна
Доорх өгөгдөл нь өгөгдөл гэж нэрлэгдсэн хүснэгтийн жагсаалтан дахь өгөгдлийн төрөлийг шинэчлэх жишээ юм. Энд бид жагсаалтад өөр нэг имэйл нэмж байна.
cqlsh:tutorialspoint> UPDATE data ... SET email = email +['xyz@tutorialspoint.com'] ... where name = 'ramu';
Баталгаажуулалт
Хэрэв та хүснэгтийг SELECT statement ашиглан шалгаж байвал дараах үр дүнг авна.
cqlsh:tutorialspoint> SELECT * FROM data; name | email − ------+-------------------------------------------------------------- − ramu | ['abc@gmail.com', 'cba@yahoo.com', 'xyz@tutorialspoint.com' − (1 rows)
Тохируулах
Тодорхойлолт нь бүлэг элементүүдийг хадгалахад ашиглагддаг өгөгдлийн төрөл юм. Багцын элементүүдийг ялгах дарааллаар буцаана.
Тохируулгатай хүснэгтийг үүсгэх
Дараах жишээнд дээжийн хүснэгтийг хоёр багана, нэр, утасны дугаараар үүсгэдэг. Олон тооны утасны дугаарыг хадгалахын тулд бид багцыг ашиглаж байна
cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);
Өгөгдөл оруулах нь
Өгөгдлийг элементүүдэд оруулах үед, доор үзүүлсэн шиг буржгар хаалт {} доор тусгаарлагдсан утгуудыг оруул.
cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman', {9848022338,9848022339});
Тодорхойлолтыг шинэчлэх
Дараах код нь өгөгдлийг нэрлэх хүснэгтэд хэрхэн шинэчлэхийг харуулж байна. Энд бид багцын өөр утасны дугаар нэмж байна.
cqlsh:tutorialspoint> UPDATE data2 ... SET phone = phone + {9848022330} ... where name = 'rahman';
Баталгаажуулалт
Хэрэв та хүснэгтийг SELECT statement ашиглан шалгаж байвал дараах үр дүнг авна.
cqlsh:tutorialspoint> SELECT * FROM data2; name | phone --------+-------------------------------------- − rahman | {9848022330, 9848022338, 9848022339} − (1 rows)
ЗУРАГ
Газрын зураг нь түлхүүрийн үнэ цэнэтэй хоёр элементийг хадгалахад ашиглагддаг өгөгдлийн төрөл юм.
Газрын зурагтай Хүснэгтийг үүсгэх
Дараах жишээ нь хоёр багана, нэр, хаягыг хэрхэн түүвэрлэлтийн хүснэгтийг хэрхэн үүсгэхийг харуулж байна. Олон хаягийн утгыг хадгалахын тулд бид газрын зургийг ашиглаж байна.
cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address map<timestamp, text>);
Газрын зураг руу өгөгдөл оруулах
Газрын зураг дээрх элементүүдэд өгөгдөл оруулахдаа бүх түлхүүрийг оруул. Доор харуулснаар {} баруун тийш таслалаар таслагдсан хос утга бүхий утга.
cqlsh:tutorialspoint> INSERT INTO data3 (name, address) VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );
Тодорхойлолтыг шинэчлэх
Дараах код нь өгөгдлийн өгөгдлийн төрлийг хэрхэн шинэчлэхийг харуулж байна3. Энд бид гол оффисын үнэ цэнийг өөрчилж байна, өөрөөр хэлбэл, бид робин нэртэй хүний оффисийн хаягийг өөрчилж байна.
cqlsh:tutorialspoint> UPDATE data3 ... SET address = address+{'office':'mumbai'} ... WHERE name = 'robin';
Баталгаажуулалт
Хэрэв та хүснэгтийг SELECT statement ашиглан шалгаж байвал дараах үр дүнг авна.
cqlsh:tutorialspoint> select * from data3; name | address - -------+------------------------------------------- − robin | {'home': 'hyderabad', 'office': 'mumbai'} (1 rows)
Кассандра - CQL Хэрэглэгчийн тодорхойлж өгсөн өгөгдөл
засварлахCQL нь хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг үүсгэх, ашиглах боломжийг хангадаг. Та олон талбарт ажиллах өгөгдлийн төрөл үүсгэж болно. Энэ бүлэгт хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг хэрхэн үүсгэх, өөрчлөх, устгах талаар тайлбарлана.
Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг үүсгэх
CREATE TYPE тушаал нь хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг үүсгэхэд ашиглагддаг. Түүний синтакс нь дараах байдалтай байна:
CREATE TYPE <keyspace name>. ( variable1, variable2).
Жишээ нь
Доорх бол хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг үүсгэх жишээ юм. Энэ жишээнд бид дараах дэлгэрэнгүй мэдээллийг агуулсан картан дээрхи мэдээллийн төрөл үүсгэж байна.
Талбар | Талбарын нэр | Өгөгдлийн төрөл |
---|---|---|
Кредит картны дугаар | Тоо | Int |
Кредит картны зүү | Зүү | Int |
Зээлийн картны нэр | Нэр | Текст |
Cvv | Cvv | Int |
Карт эзэмшигчийн холбоо барих мэдээлэл | Дугаар | Тохируулах |
cqlsh:tutorialspoint> CREATE TYPE card_details ( ... num int, ... pin int, ... name text, ... cvv int, ... phone set<int> ... );
Тэмдэглэл: Хэрэглэгчийн тодорхойлсон өгөгдлийн төрөлд ашиглагдах нэр нь хадгалагдсан төрлийн нэртэй таарахгүй байх ёстой.
Баталгаажуулалт
DESCRIBE тушаалыг ашиглан үүсгэсэн төрлийг үүсгэсэн эсэхийг шалгана уу.
CREATE TYPE tutorialspoint.card_details ( num int, pin int, name text, cvv int, phone set<int> );
Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг өөрчлөх
ALTER TYPE командыг одоо байгаа өгөгдлийн төрлийг өөрчлөхөд ашигладаг. ALTER-г ашигласнаар та шинэ талбарыг нэмж эсвэл одоо байгаа талбарыг өөрчилж болно.
Талбарт төрөл нэмэх
Хэрэглэгчийн тодорхойлсон өгөгдлийн төрөлд шинэ талбарыг нэмэхийн тулд дараах синтаксийг ашиглана.
ALTER TYPE typename ADD field_name field_type;
Дараах код нь категорийн төрөл дэх картын төрлийг харуулна. Энд бид имэйл нэртэй шинэ салбар нэмж байна.
cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;
Баталгаажуулалт
DESCRIBE тушаалыг ашиглан шинэ талбарыг нэмсэн эсэхийг шалгана уу.
cqlsh:tutorialspoint> describe type card_details; CREATE TYPE tutorialspoint.card_details ( num int pin int, name text, cvv int, phone set<int>, );
Талбарыг төрөл хэлбэрээр өөрчлөх
Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг өөрчлөхийн тулд дараах синтаксийг ашиглана уу.
ALTER TYPE typename RENAME existing_name TO new_name;
Дараах код нь төрөл дэх талбарын нэрийг өөрчилдөг. Энд бид талбар имэйлийг шуудангаар нэрлэх болно.
cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;
Баталгаажуулалт
DESCRIBE тушаалыг ашиглан төрөлтийн нэр өөрчлөгдсөн эсэхийг шалгана уу.
cqlsh:tutorialspoint> describe type card_details; CREATE TYPE tutorialspoint.card_details ( num int, pin int, name text, cvv int, phone set<int>, mail text );
Хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг устгах
DROP TYPE нь хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг устгахад хэрэглэгддэг тушаал юм. Доорх бол хэрэглэгчийн тодорхойлсон өгөгдлийн төрлийг устгах жишээ юм.
Жишээ нь
Хас устгахаас өмнө доор тайлбарласны дагуу DESCRIBE_TYPES командыг ашиглан хэрэглэгчийн тодорхойлсон өгөгдлийн төрлүүдийн жагсаалтыг баталгаажуулна уу.
cqlsh:tutorialspoint> DESCRIBE TYPES; card_details card
Хоёр төрлөөс эхлэн нэрлэсэн картыг доор үзүүлснээр устгах хэрэгтэй.
cqlsh:tutorialspoint> drop type card;
Өгөгдлийн төрлийг хассан эсэхийг шалгахын тулд DESCRIBE командыг ашиглана уу.
cqlsh:tutorialspoint> describe types; card_details.