{"id":853,"date":"2016-10-10T23:56:10","date_gmt":"2016-10-10T20:56:10","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=853"},"modified":"2016-10-24T22:51:33","modified_gmt":"2016-10-24T19:51:33","slug":"docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/","title":{"rendered":"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f"},"content":{"rendered":"<p>Merhaba arkada\u015flar.<\/p>\n<p>Bir \u00f6nceki makalemde bir s\u00fcredir Messaging yap\u0131lar\u0131 \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131mdan bahsetmi\u015ftim sizlere. Yine ayn\u0131 \u015fekilde baz\u0131 ihtiya\u00e7 ve kararlardan\u00a0dolay\u0131, NoSQL olarak Apache d\u00fcnyas\u0131ndan Cassandra\u00a0kullanmam\u0131z gerekti. Bu makalemde ise sizlere biraz ge\u00e7 de olsa Docker \u00fczerinde Cassandra kurulumundan\u00a0bahsedip, .Net \u00fczerinde\u00a0bir \u00f6rnek ger\u00e7ekle\u015ftirece\u011fim.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/cassandra.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-855 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/cassandra.png\" alt=\"cassandra\" width=\"422\" height=\"422\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra.png 422w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-150x150.png 150w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-300x300.png 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-100x100.png 100w\" data-sizes=\"(max-width: 422px) 100vw, 422px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 422px; --smush-placeholder-aspect-ratio: 422\/422;\" \/><\/a><\/p>\n<h4>Nedir bu Apache Cassandra?<\/h4>\n<blockquote><p>Geli\u015ftirilmesine ilk olarak Facebook taraf\u0131ndan ba\u015flan\u0131p sonras\u0131nda ise open-source bir hale gelerek, Apache taraf\u0131ndan devam edilmi\u015f\/edilmektedir. \u00d6zellikle y\u00fcksek \u00f6l\u00e7eklenebilirli\u011fe ve y\u00fcksek performansl\u0131 bir distributed NoSQL mimarisine sahip olmas\u0131 dikkat \u00e7ekmektedir.<\/p><\/blockquote>\n<p>Sorgulama dili ise\u00a0CQL(Cassandra Query Language) olarak adland\u0131r\u0131l\u0131p, SQL&#8217;e \u00e7ok benzemektedir. eBay, GitHub, Instagram, Netflix gibi hacimli siteler taraf\u0131ndan da kullan\u0131lmaktad\u0131r.\u00a0Bir ba\u015fka g\u00fczel y\u00f6n\u00fc ise <strong>y\u00fcksek \u00f6l\u00e7eklenebilirli\u011fi<\/strong> sayesinde petabaytlarca veriyi tutabilirken, saniyeler i\u00e7erisinde binlerce i\u015flemi de ger\u00e7ekle\u015ftirebilmektedir.\u00a0Bunlara ek olarak <strong>do\u011frusal \u00f6l\u00e7eklenebilirli\u011fe<\/strong>(fast linear-scale) de sahiptir. Yani -n say\u0131da node ile saniyede 200.000 i\u015flem yapabilirken, sisteme bir node daha eklendi\u011finde ise i\u015flem kapasitesi de artmaktad\u0131r.<\/p>\n<p>Di\u011fer bir g\u00fczel yan\u0131 da\u00a0always on architecture&#8217;a ve\u00a0tek k\u0131r\u0131lma noktas\u0131n\u0131n olmamas\u0131(no single point of failure) ile sunucudaki herhangi bir hatadan dolay\u0131 t\u00fcm k\u00fcmelerin \u00e7al\u0131\u015fmas\u0131n\u0131 engellememektedir. \u00c7\u00fcnk\u00fc klasik master\/slave veya replication yap\u0131lar\u0131n\u0131 kullanmaz. Verileri t\u00fcm node&#8217;lara da\u011f\u0131tmaktad\u0131r ve bu t\u00fcm node&#8217;lar, gelen request&#8217;lere response verebilecek \u015fekilde tasarlanm\u0131\u015ft\u0131rlar. Bu sayede herhangi bir node&#8217;da ya\u015fanan sorun, <strong>t\u00fcm\u00fcn\u00fc<\/strong> etkilememektedir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/master-slave-problems.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-862 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/master-slave-problems.png\" alt=\"master-slave-problems\" width=\"816\" height=\"373\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/master-slave-problems.png 816w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/master-slave-problems-300x137.png 300w\" data-sizes=\"(max-width: 816px) 100vw, 816px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 816px; --smush-placeholder-aspect-ratio: 816\/373;\" \/><\/a><\/p>\n<h4><\/h4>\n<p>Cassandra&#8217;n\u0131n genel olarak \u015f\u00f6yle \u00f6zelliklerine bir bakmak gerekirse e\u011fer:<\/p>\n<ul>\n<li>Open source bir projedir<\/li>\n<li>Elastic scability \u00f6zelli\u011fi ile ihtiya\u00e7 duyuldu\u011fu noktada kapasite artt\u0131r\u0131lmas\u0131na kolayca uyum sa\u011flamaktad\u0131r<\/li>\n<li>Distributed bir yap\u0131ya destek verdi\u011fi i\u00e7in, veriyi istenilen kadar makine \u00fczerinde geni\u015fletmeye imkan vermektedir<\/li>\n<li>Transaction deste\u011fi olarak <strong>AID<\/strong>(Atomicity, Isolated, Durability)&#8217;i desteklemektedir<\/li>\n<li>Bunlara ek olarak birde <strong>operational simplicity<\/strong> dedik mi, tad\u0131ndan yenmez kan\u0131mca<\/li>\n<\/ul>\n<h4>Consistency<\/h4>\n<p>Transaction i\u00e7inde AID deste\u011fini garanti etti\u011fini s\u00f6ylemi\u015ftik. Consistency konusunda ise opsiyonel bir se\u00e7enek sunar. Yani bu bizim ilgili veriyi nas\u0131l okumak\/i\u015flemek istedi\u011fimizle alakal\u0131 bir durum. \u00d6rne\u011fin response&#8217;u t\u00fcm node&#8217;lardan okuyarak al veya birka\u00e7\u0131ndan okuyarak \u015fu \u015fu i\u015flemi ger\u00e7ekle\u015ftir gibi opsiyonel se\u00e7enekler mevcuttur.<\/p>\n<h4>Kurulum<\/h4>\n<p>Cassandra hakk\u0131nda bu\u00a0giri\u015f bilgilerinden sonra\u00a0dilerseniz kurulumuna ge\u00e7elim. Kurulumu olduk\u00e7a kolayd\u0131r ve farkl\u0131 platform&#8217;lara destek vermektedir. Ayr\u0131ca Java ile yaz\u0131ld\u0131\u011f\u0131 i\u00e7in\u00a0bilgisayar\u0131m\u0131zda java ortam\u0131n\u0131n kurulu olmas\u0131 gerekmektedir. Download i\u015flemlerini <a href=\"http:\/\/cassandra.apache.org\/download\/\" target=\"_blank\">buradan<\/a>\u00a0ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<p>Ben kurulum i\u015flemini <strong>Docker<\/strong> \u00fczerinden linux ortam\u0131nda ger\u00e7ekle\u015ftirece\u011fim. E\u011fer sizde Docker \u00fczerinden i\u015flem yapmak isterseniz\u00a0<a href=\"https:\/\/www.docker.com\/products\/docker-toolbox\" target=\"_blank\">buradan<\/a> ilgili i\u015fletim sisteminize g\u00f6re olan versiyonu se\u00e7ip,\u00a0straightforward bir \u015fekilde kurulumu ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<p>Docker Quickstart Terminal&#8217;i a\u00e7t\u0131ktan sonra<\/p>\n<pre class=\"lang:default decode:true\">docker pull cassandra:latest<\/pre>\n<p>komutu ile g\u00fcncel cassandra image&#8217;ini Docker Hub \u00fczerinden sisteme \u00e7ekelim.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/docker-cassandra.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-860 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/docker-cassandra.jpg\" alt=\"docker-cassandra\" width=\"499\" height=\"332\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/docker-cassandra.jpg 499w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/docker-cassandra-300x200.jpg 300w\" data-sizes=\"(max-width: 499px) 100vw, 499px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 499px; --smush-placeholder-aspect-ratio: 499\/332;\" \/><\/a><\/p>\n<p>Image&#8217;i sisteme \u00e7ektikten sonra a\u015fa\u011f\u0131daki komut ile container&#8217;\u0131 \u00e7al\u0131\u015ft\u0131ral\u0131m ve\u00a0broadcast adresi olarak da &#8220;<em>192.168.99.100<\/em>&#8221; ip adresini kullanal\u0131m.<\/p>\n<pre class=\"lang:default decode:true\">docker run --name cassandra -v \/Users\/MyProjects\/scripts\/:\/script -d -p \"9042\r\n:9042\" -e CASSANDRA_BROADCAST_ADDRESS=192.168.99.100 cassandra:latest<\/pre>\n<p>Bu komutun\u00a0\u00e7al\u0131\u015fmas\u0131ndan sonra, Cassandra&#8217;ya ba\u011flanmak i\u00e7in haz\u0131r durumday\u0131z.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/cassandra-broadcast.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-864 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/cassandra-broadcast.jpg\" alt=\"cassandra-broadcast\" width=\"499\" height=\"94\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-broadcast.jpg 499w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-broadcast-300x57.jpg 300w\" data-sizes=\"(max-width: 499px) 100vw, 499px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 499px; --smush-placeholder-aspect-ratio: 499\/94;\" \/><\/a><\/p>\n<h4>Key Terms<\/h4>\n<p>Database i\u015flemlerine ba\u015flamadan \u00f6nce kafa kar\u0131\u015f\u0131kl\u0131\u011f\u0131na sebebiyet vermemek i\u00e7in, Cassandra ile Relational Model&#8217;lerdeki kelime anlamlar\u0131na bir bakal\u0131m.<\/p>\n<table style=\"height: 176px;\" width=\"334\">\n<tbody>\n<tr>\n<td width=\"130\"><em><strong>Relational Terms<\/strong><\/em><\/td>\n<td width=\"133\"><em><strong>Cassandra Terms<\/strong><\/em><\/td>\n<\/tr>\n<tr>\n<td>Database<\/td>\n<td>Keyspace<\/td>\n<\/tr>\n<tr>\n<td>Table<\/td>\n<td>Column Family<\/td>\n<\/tr>\n<tr>\n<td>Row<\/td>\n<td>Record<\/td>\n<\/tr>\n<tr>\n<td>Column<\/td>\n<td>Column<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Cassandra GUI Kullan\u0131m\u0131<\/h4>\n<p>.Net taraf\u0131ndaki de\u011fi\u015fiklikleri g\u00f6rebilmemiz i\u00e7in \u015fimdi bize bir GUI laz\u0131m. Forumlarda biraz ara\u015ft\u0131rma sonucu en yayg\u0131n olarak tercih edilen database tool&#8217;u olan <strong>DBeaver<\/strong>&#8216;\u0131 kullanmaya karar verdim.\u00a0Free bir database tool&#8217;u olan DBeaver, multi-platform bir universal client&#8217;d\u0131r. Enterprise\u00a0s\u00fcr\u00fcm\u00fcn\u00fc <a href=\"http:\/\/dbeaver.jkiss.org\/download\/enterprise\/\" target=\"_blank\">buradan<\/a> indirebilirsiniz.<\/p>\n<p>DBeaver&#8217;\u0131n kurulum i\u015flemlerini ger\u00e7ekle\u015ftirdikten sonra, a\u00e7\u0131lan ilk ekrandan yeni bir connection olu\u015ftural\u0131m. Bunun i\u00e7in connection type&#8217;\u0131 &#8220;Cassandra CQL&#8221; olarak se\u00e7elim. Ard\u0131ndan &#8220;next&#8221; tu\u015funa basarak &#8220;host&#8221; adresi olarak daha \u00f6nce broadcast olarak belirledi\u011fimiz &#8220;192.168.99.100&#8221; adresini verelim ve &#8220;port&#8221; u &#8220;9042&#8221; olarak sabit b\u0131rakal\u0131m. Bu i\u015flemlerin ard\u0131ndan ise &#8220;Test Connection&#8221; butonuna basarak her \u015feyin sorunsuz oldu\u011fundan emin olal\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/cassandra-test-connection.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-865 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/cassandra-test-connection.jpg\" alt=\"cassandra-test-connection\" width=\"785\" height=\"591\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-test-connection.jpg 785w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-test-connection-300x226.jpg 300w\" data-sizes=\"(max-width: 785px) 100vw, 785px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 785px; --smush-placeholder-aspect-ratio: 785\/591;\" \/><\/a><\/p>\n<p>Connection\u00a0i\u015flemi ba\u015far\u0131l\u0131 bir \u015fekilde ger\u00e7ekle\u015fti. Test i\u015flemi ard\u0131ndan tekrardan &#8220;next&#8221; butonuna basarak i\u015flemimizi tamaml\u0131yoruz. Connection ba\u015far\u0131l\u0131 bir \u015fekilde tan\u0131mland\u0131 ve &#8220;Keyspaces&#8221; yani database listesi a\u015fa\u011f\u0131daki gibi listelenmi\u015ftir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/cassandra-keyspaces.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-866 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/cassandra-keyspaces.jpg\" alt=\"cassandra-keyspaces\" width=\"786\" height=\"593\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-keyspaces.jpg 786w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-keyspaces-300x226.jpg 300w\" data-sizes=\"(max-width: 786px) 100vw, 786px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 786px; --smush-placeholder-aspect-ratio: 786\/593;\" \/><\/a><\/p>\n<p>GUI haz\u0131r oldu\u011funa g\u00f6re hemen bir adet test keyspace&#8217;i ekleyelim. Bunun i\u00e7in yeni bir SQL Editor a\u00e7al\u0131m ve a\u015fa\u011f\u0131daki sorguyu execute edelim.<\/p>\n<pre class=\"lang:tsql decode:true\">CREATE KEYSPACE TestDB \r\nWITH REPLICATION = \r\n{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 };<\/pre>\n<p><strong>Not<\/strong>: Burada bulunan &#8220;WITH REPLICATION&#8221; sat\u0131r\u0131 ile verinin ka\u00e7 kopyas\u0131n\u0131n yaz\u0131laca\u011f\u0131n\u0131 ve &#8220;class&#8221; property&#8217;si ile de,\u00a0verinin\u00a0kopyalar\u0131n\u0131n hangi node&#8217;lara yaz\u0131laca\u011f\u0131n\u0131 replication strategy ile belirlemektedir. Burada iki adet strategy almaktad\u0131r. Bunlar \u00f6zetle:<\/p>\n<ul>\n<li><strong>SimpleStrategy<\/strong>:\u00a0Bu se\u00e7enek\u00a0se\u00e7ildi\u011finde cluster i\u00e7erisindeki node&#8217;lar &#8220;replication factor&#8221; say\u0131s\u0131 kadar, sequentially bir \u015fekilde saat y\u00f6n\u00fcnde yaz\u0131larak devam eder. (Tek bir data center oldu\u011funda kullan\u0131lmas\u0131 gerekmektedir)<\/li>\n<li><strong>NetworkTopologyStrategy<\/strong>:\u00a0Bu se\u00e7enek\u00a0ise multiple data center&#8217;a sahip olundu\u011funda tercih edilmelidir. Bu strategy ile temel olarak her bir data center&#8217;da ne kadar replica&#8217;n\u0131n istenildi\u011fi belirlenebilmektedir.<\/li>\n<\/ul>\n<p>Execute i\u015fleminden sonra sol tarafda bulunan Database Navigator&#8217;\u0131 refresh yapt\u0131ktan sonra olu\u015fturmu\u015f oldu\u011fumuz &#8220;TestDB&#8221; keyspace&#8217;inin geldi\u011fini g\u00f6rebiliriz.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/create-keyspace.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-870 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/create-keyspace.jpg\" alt=\"create-keyspace\" width=\"1012\" height=\"513\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/create-keyspace.jpg 1012w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/create-keyspace-300x152.jpg 300w\" data-sizes=\"(max-width: 1012px) 100vw, 1012px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1012px; --smush-placeholder-aspect-ratio: 1012\/513;\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Test keyspace&#8217;ini olu\u015fturduktan sonra i\u00e7erisine bir adet de <strong>column family<\/strong> yani yeni bir <strong>table<\/strong> ekleyelim. &#8220;Products&#8221;\u00a0column family&#8217;sini\u00a0ekleyebilmek\u00a0i\u00e7in a\u015fa\u011f\u0131daki komut sat\u0131r\u0131n\u0131 kullanal\u0131m.<\/p>\n<pre class=\"lang:default decode:true \">CREATE COLUMNFAMILY Products (\r\nId int,\r\nName varchar,\r\nQuantity int,\r\nPRIMARY KEY (Id))<\/pre>\n<p>Yukar\u0131daki kodu execute ettikten sonra &#8220;products&#8221; column family&#8217;si a\u015fa\u011f\u0131 g\u00f6rseldeki gibi &#8220;testdb&#8221; alt\u0131nda ki, &#8220;Tables&#8221; i\u00e7erisine eklenecektir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/create-columnfamily.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-871 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/create-columnfamily.jpg\" alt=\"create-columnfamily\" width=\"1055\" height=\"637\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/create-columnfamily.jpg 1055w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/create-columnfamily-300x181.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/create-columnfamily-1024x618.jpg 1024w\" data-sizes=\"(max-width: 1055px) 100vw, 1055px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1055px; --smush-placeholder-aspect-ratio: 1055\/637;\" \/><\/a><\/p>\n<h4>.Net Taraf\u0131na CRUD \u0130\u015flemleri<\/h4>\n<p>Di\u011fer i\u015flemler i\u00e7in art\u0131k\u00a0.Net taraf\u0131na ge\u00e7ebiliriz. &#8220;CassandraSample&#8221; isminde yeni bir console application olu\u015ftural\u0131m ve NuGet Package Manager \u00fczerinden &#8220;<em>CassandraCSharpDriver<\/em>&#8221; paketini indirelim.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/cassandra-driver.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-874 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/cassandra-driver.jpg\" alt=\"cassandra-driver\" width=\"715\" height=\"207\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-driver.jpg 715w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/cassandra-driver-300x87.jpg 300w\" data-sizes=\"(max-width: 715px) 100vw, 715px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 715px; --smush-placeholder-aspect-ratio: 715\/207;\" \/><\/a><\/p>\n<p>CassandraCSharpDriver paketi <em>Datastax<\/em> isimli firma taraf\u0131ndan geli\u015ftirilmekte olup, hakk\u0131nda daha fazla bilgiye <a href=\"https:\/\/academy.datastax.com\/resources\/getting-started-apache-cassandra-and-c-net\" target=\"_blank\">buradan<\/a> ula\u015fabilirsiniz.<\/p>\n<p>&#8220;CassandraCSharpDriver&#8221; client&#8217;\u0131nda context olarak &#8220;ISession&#8221; interface&#8217;i \u00fczerinden ilerlemektedir. Bu interface&#8217;i\u00a0initialize edebilmek i\u00e7in ise &#8220;Cluster&#8221; class&#8217;\u0131n\u0131n builder&#8217;\u0131 kullan\u0131larak,\u00a0docker \u00fczerindeki cassandra endpoint&#8217;ini girmemiz ve build etmemiz gerekmektedir. Build i\u015fleminin ard\u0131ndan elde etti\u011fimiz &#8220;Cluster&#8221; objesi ile, &#8220;Connect&#8221; method&#8217;unu kullanarak, daha \u00f6nce olu\u015fturmu\u015f oldu\u011fumuz &#8220;keyspace&#8221; e ba\u011flan\u0131yoruz ve &#8220;ISession&#8221; interface&#8217;ini initialize etmi\u015f oluyoruz. Dilerseniz kod \u00fczerinden bir bakal\u0131m.<\/p>\n<pre class=\"lang:c# decode:true\">Cluster cluster = Cluster.Builder().AddContactPoint(\"192.168.99.100\").Build();\r\n\r\nISession session = cluster.Connect(\"testdb\");<\/pre>\n<p>Art\u0131k i\u015flemlerimize &#8220;session&#8221; objesi \u00fczerinden devam edece\u011fiz. Haydi bir ka\u00e7 CRUD i\u015flemi ger\u00e7ekle\u015ftirelim.<\/p>\n<pre class=\"lang:c# decode:true\">using Cassandra;\r\nusing System;\r\nusing System.Linq;\r\n\r\nnamespace CassandraSample\r\n{\r\n    class Program\r\n    {\r\n        static void Main(string[] args)\r\n        {\r\n            Cluster cluster = Cluster.Builder().AddContactPoint(\"192.168.99.100\").Build();\r\n\r\n            ISession session = cluster.Connect(\"testdb\");\r\n\r\n            InsertNewRow(session);\r\n            GetRowById(session, 1);\r\n            UpdateRowById(session, 1, \"Iphone 7 Gold\", 400);\r\n            GetRowById(session, 1);\r\n            DeleteRowById(session, 1);\r\n\r\n            Console.ReadLine();\r\n        }\r\n\r\n        private static void InsertNewRow(ISession session)\r\n        {\r\n            session.Execute(@\"insert into products (id, name, quantity)\r\n                              values (1, 'Iphone 7 Plus', 500)\");\r\n        }\r\n\r\n        private static void GetRowById(ISession session, int id)\r\n        {\r\n            var result = session.Execute($\"select * from products where id={id}\").First();\r\n\r\n            Console.WriteLine(\"Name: {0} Quantity: {1}\", result[\"name\"], result[\"quantity\"]);\r\n        }\r\n\r\n        private static void UpdateRowById(ISession session, int id, string name, int quantity)\r\n        {\r\n            session.Execute($\"update products set name='{name}', quantity={quantity} where id={id}\");\r\n        }\r\n\r\n        private static void DeleteRowById(ISession session, int id)\r\n        {\r\n            session.Execute($\"delete from products where id={id}\");\r\n        }\r\n    }\r\n}<\/pre>\n<p>CQL sorgular\u0131\u00a0ne kadar da SQL sorgular\u0131na benziyor de\u011fil mi? Evet CRUD i\u015flemleri bu kadar basit. &#8220;session&#8221; objesinin &#8220;Execute&#8221; method&#8217;u kullan\u0131larak, inline olarak CQL sorgular\u0131n\u0131 yaz\u0131yoruz. Dilerseniz uygulamay\u0131 bir \u00e7al\u0131\u015ft\u0131ral\u0131m\u00a0ve sonucuna bakal\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/result-cassandra.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-876 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/10\/result-cassandra.jpg\" alt=\"result-cassandra\" width=\"514\" height=\"115\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/result-cassandra.jpg 514w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/10\/result-cassandra-300x67.jpg 300w\" data-sizes=\"(max-width: 514px) 100vw, 514px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 514px; --smush-placeholder-aspect-ratio: 514\/115;\" \/><\/a><\/p>\n<p>\u0130lk \u00f6nce &#8220;Iphone 7 Plus&#8221; isimli product&#8217;\u0131 insert i\u015flemini ger\u00e7ekle\u015ftirdik ve ard\u0131ndan &#8220;GetRowById&#8221; method&#8217;u ile console&#8217;a yazd\u0131k. Ard\u0131ndan &#8220;UpdateRowById&#8221; method&#8217;u ile de product&#8217;\u0131n name&#8217;ini &#8220;Iphone 7 Gold&#8221; ve quantity&#8217;sini 400 olarak g\u00fcncelledik.<\/p>\n<p>Peki hepsi bu kadar m\u0131? Tabi ki hay\u0131r. Bir \u00f6rnekte simple mapping \u00fczerine ger\u00e7ekle\u015ftirelim.<\/p>\n<pre class=\"lang:c# decode:true \">private static void SimpleMapping(ISession session, int id)\r\n{\r\n    IMapper mapper = new Mapper(session);\r\n\r\n    \/\/ Fluently bir \u015fekilde entity'leri map'liyoruz.\r\n    MappingConfiguration.Global.Define(\r\n        new Map&lt;Product&gt;()\r\n            .TableName(\"products\")\r\n            .PartitionKey(p =&gt; p.Id));\r\n\r\n    \/\/ Daha fazla \u00f6rnek kullan\u0131m i\u00e7in: http:\/\/datastax.github.io\/csharp-driver\/features\/components\/mapper\/#mapper-api-example\r\n    var product = mapper.First&lt;Product&gt;(\"select * from products\");\r\n\r\n    Console.WriteLine(\"Name: {0} Quantity: {1}\", product.Name, product.Quantity);\r\n}<\/pre>\n<p>Burada ise &#8220;Mapper&#8221; objesini yine &#8220;session&#8221; \u00fczerinden itinialize ediyoruz. Fluently bir \u015fekilde &#8220;Product&#8221; entity&#8217;sini &#8220;MappingConfiguration&#8221; \u00fczerinde map&#8217;liyoruz. Mapping i\u015flemlerinden sonra ise olu\u015fturmu\u015f oldu\u011fumuz &#8220;mapper&#8221; context&#8217;i \u00fczerinden &#8220;mapper.First&lt;T&gt;&#8221; method&#8217;unu kullanarak, i\u00e7erisine girmi\u015f oldu\u011fumuz CQL sorgusu sonucunda result&#8217;\u0131n mapping i\u015flemini ger\u00e7ekle\u015ftiriyoruz.<\/p>\n<p>Bu ve buna benzer daha fazla Fluent method&#8217;lar i\u00e7in ise, <a href=\"http:\/\/datastax.github.io\/csharp-driver\/features\/components\/mapper\/#mapper-api-example\" target=\"_blank\">buraya<\/a> bir g\u00f6z atabilirsiniz.<\/p>\n<h4>Ne zaman tercih edilmeli?<\/h4>\n<p>Yukar\u0131da vermi\u015f oldu\u011fumuz bilgilerin ard\u0131ndan konuyu bir toparlamak gerekirse:<\/p>\n<ul>\n<li>De\u011fi\u015fken ve b\u00fcy\u00fck verilerin saklan\u0131lmas\u0131 gerekti\u011finde<\/li>\n<li>Bu b\u00fcy\u00fck veriler \u00fczerinde y\u00fcksek performans gerektiren read\/write i\u015flemlerinin yap\u0131lmas\u0131 gerekti\u011finde<\/li>\n<li>High availability s\u00f6z konusu oldu\u011funda<\/li>\n<li>ve g\u00fcn\u00fcm\u00fcz teknolojisinde en temel concern&#8217;lerden birisi olan\u00a0scalability s\u00f6z konusu oldu\u011funda<\/li>\n<\/ul>\n<p>gibi bir \u00e7ok nedenlerden dolay\u0131 tercih edilebilir.<\/p>\n<p>Umar\u0131m keyifli bir yaz\u0131 olmu\u015ftur. \u00d6rnek projeye ekten eri\u015febilirsiniz.<\/p>\n<p>Takipte kal\u0131n&#8230;<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/10\/CassandraSample.rar\">cassandrasample<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba arkada\u015flar. Bir \u00f6nceki makalemde bir s\u00fcredir Messaging yap\u0131lar\u0131 \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131mdan bahsetmi\u015ftim sizlere. Yine ayn\u0131 \u015fekilde baz\u0131 ihtiya\u00e7 ve kararlardan\u00a0dolay\u0131, NoSQL olarak Apache d\u00fcnyas\u0131ndan Cassandra\u00a0kullanmam\u0131z gerekti. Bu makalemde ise sizlere biraz ge\u00e7 de olsa Docker \u00fczerinde Cassandra kurulumundan\u00a0bahsedip, .Net \u00fczerinde\u00a0bir \u00f6rnek ger\u00e7ekle\u015ftirece\u011fim. Nedir bu Apache&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,292],"tags":[295,298,297,294,300,296,299,304,301,303,302,293],"class_list":["post-853","post","type-post","status-publish","format-standard","hentry","category-net","category-nosql","tag-apache-cassandra-nedir","tag-c-cassandra","tag-c-ile-cassandra-kullanimi","tag-cassandra","tag-cassandra-gui","tag-cassandra-nedir","tag-dbeaver","tag-docker-c-cassandra","tag-docker-cassandra","tag-docker-cassandra-kurulumu","tag-docker-kullanimi","tag-nosql","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f - G\u00f6khan G\u00f6kalp<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-10T20:56:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-10-24T19:51:33+00:00\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f\",\"datePublished\":\"2016-10-10T20:56:10+00:00\",\"dateModified\":\"2016-10-24T19:51:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/\"},\"wordCount\":1430,\"commentCount\":9,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"keywords\":[\"Apache Cassandra Nedir\",\"C# Cassandra\",\"C# ile Cassandra kullan\u0131m\u0131\",\"Cassandra\",\"Cassandra GUI\",\"Cassandra Nedir\",\"DBeaver\",\"docker c# cassandra\",\"Docker Cassandra\",\"Docker cassandra kurulumu\",\"Docker kullan\u0131m\u0131\",\"NoSQL\"],\"articleSection\":[\".NET\",\"NoSQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/\",\"name\":\"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"datePublished\":\"2016-10-10T20:56:10+00:00\",\"dateModified\":\"2016-10-24T19:51:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f - G\u00f6khan G\u00f6kalp","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/","og_locale":"tr_TR","og_type":"article","og_title":"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2016-10-10T20:56:10+00:00","article_modified_time":"2016-10-24T19:51:33+00:00","author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f","datePublished":"2016-10-10T20:56:10+00:00","dateModified":"2016-10-24T19:51:33+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/"},"wordCount":1430,"commentCount":9,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"keywords":["Apache Cassandra Nedir","C# Cassandra","C# ile Cassandra kullan\u0131m\u0131","Cassandra","Cassandra GUI","Cassandra Nedir","DBeaver","docker c# cassandra","Docker Cassandra","Docker cassandra kurulumu","Docker kullan\u0131m\u0131","NoSQL"],"articleSection":[".NET","NoSQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/","url":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/","name":"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"datePublished":"2016-10-10T20:56:10+00:00","dateModified":"2016-10-24T19:51:33+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/docker-uzerine-cassandra-kurulumu-ve-c-sharp-ile-giris\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"Docker \u00dczerine Cassandra Kurulumu ve .Net ile Giri\u015f"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=853"}],"version-history":[{"count":19,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/853\/revisions"}],"predecessor-version":[{"id":928,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/853\/revisions\/928"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}