Download - Sterowniki .NET i C++ dla Apache Cassandra
![Page 1: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/1.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Sterowniki .NET i C++ dla Apache Cassandra
![Page 3: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/3.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
CognitumAutoryzowany dystrybutor DataStax Enterprise w Polsce
Dostarczamy:
Wysoce skalowalne aplikacje w chmurze
Rozwiązania Big Data
Systemy zarządzania wiedzą
Aplikacje dedykowane
Rozwój oprogramowania i testowanie aplikacji
Konsulting IT
strong partnerships:
Customers from: US, CH, FL, DE
Big Data
Cloud
Semantics
![Page 4: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/4.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Spis treści (Agenda)1. Cassandra
2. Jak działają stare sterowniki oparte o Thrift
3. Asynchroniczność
4. Binarny protokół klient-serwer w Cassandrze
5. Przykład (driver .Net)
6. Plany na przyszłość
7. Driver C++
![Page 5: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/5.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Cassandra1. noSql – BigTable (Google 2005)
2. Stworzona w FB – obecnie Apache
3. Rozproszona
4. Skalowalna - Duże (100PB) dane
5. Obecnie już istnieją instalacje po 1000 nodów
6. Symetryczna (odporna na awarie)
7. Klaster (możliwość instalacji „multidatacenter”)
8. Elastyczna – duże możliwości konfiguracji
9. CQL – Cassandra Query Language – podobny do SQL
![Page 6: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/6.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Multidatacenter
![Page 7: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/7.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Typowa aplikacja (serwis www .Net)
![Page 8: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/8.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Ważne!1. Driver to nie tyko „smart socket” - posiada
rozbudowaną logikę działania2. Driver zarządza połączeniami do klastra
– load balancer3. Użytkownik nie musi martwić się o
połączenie i strategię – wystarczy ze użyje jednej z dostaraczanych np. RoundRobin
4. Driver potrafi automatycznie powtórzyć zapytanie w razie potrzeby
5. Można tworzyć własne strategie6. Lock-free (wysoka wydajność)
![Page 9: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/9.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Interfejsy C*: Thrift1. IDL (interface definition language)
2. Pozwala na automatyczne generowanie kodu w różnych językach
3. Sam Thrift to nie wszystko – trzeba obsłużyć zapytania do klastra
4. Zapytanie blokuje połączenie (podobnie jak zapytanie http) w oczekiwaniu na odpowiedź
![Page 10: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/10.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Interfejsy C*: Protokół binarny1. Operacje asynchroniczne
2. Pojedyncze polaczenie do 128 jednoczesnych zapytan
3. Lepsze wykorzystanie zasobów (połączenia są kosztowne)
4. Cassandra może lepiej optymizować
5. Wsparcie dla programowania asynchronicznego – powszechne obecnie w podejsciu client-server
6. Zdarzenia z Cassandy są „pushowane”
• zmiana schematu bazy
• zmiana w topologii klastra
![Page 11: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/11.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Wspierane języki1. Native Protocol Drivers (Datastax)
• Java driver (with ORM)
• .Net driver (Cql2Linq, ORM)
• Python
• C++ Driver – early stage of development
![Page 12: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/12.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Przykład – połączenie (driver .Net)1. public class NerdMovie {
[PartitionKey] public string Movie;
[ClusteringKey(1)] public string Director;
public string MainActor;
public int Year;
}
2. var cluster = Cluster.Builder().AddContactPoints("192.168.13.1", "192.168.13.1").Build();
3. using (var session = cluster.Connect("test")){ var nerdMovieTable = session.GetTable<NerdMovie>(); nerdMovieTable.CreateIfNotExists();
![Page 13: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/13.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Zapytaniavar batch = session.CreateBatch();
batch.Append(nerdMovieTable.Insert(
new NerdMovie() { Movie = "Serenity", Director = "Joss Whedon", MainActor = "Nathan Fillion", Year = 2005 }));
batch.Append(nerdMovieTable.Insert(
new NerdMovie() { Movie = "Pulp Fiction", Director = "Quentin Tarantino", MainActor = "John Travolta", Year = 1994 }));
batch.Append(nerdMovieTable.Insert(
new NerdMovie() { Movie = "Zero Charisma", Director = "Katie Graham", MainActor = "Nathan Fillion", Year = 2013 }));
var query = from m in nerdMovieTable select m;
![Page 14: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/14.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Wywołanie synchronicznebatch.Execute();
var result = query.Execute();
foreach (var e in result)
Console.WriteLine("Movie " + e.Movie + "[" + e.Director + "]");
![Page 15: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/15.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Wywołanie asynchroniczneManualResetEventSlim ev = new ManualResetEventSlim();
batch.BeginExecute((ar1) => {
batch.EndExecute(ar1);
query.BeginExecute((ar2) => {
var result = query.EndExecute(ar2);
foreach (var e in result)
Console.WriteLine("Movie " + e.Movie + "[" + e.Director + "]");
ev.Set();
}, null);
}, null);
ev.Wait();
![Page 16: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/16.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Co dalej? (driver .Net)Protokół binarny: wersja 2 (Cassandra 2.x)
- Batch
- Autentykacja poprzez SASL
- Lekkie transakcje – implementacja protokołu Paxos
IINSER … IF NOT EXISTS, UPDATE … IF
<column>=<value>
- Strumieniowanie wyników
![Page 17: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/17.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Driver C++ (w drodze)
1. Wieloplatformowość (np. embedded)
2. Oparty o boost::asio3. Mała liczba zależności od innych
bibliotek
![Page 18: Sterowniki .NET i C++ dla Apache Cassandra](https://reader033.vdocuments.net/reader033/viewer/2022061117/5459169fb1af9f33608b5378/html5/thumbnails/18.jpg)
www.cognitum.eu The company, product and service names used in this web site are for identification purposes only. All trademarks and registered trademarks are the property of their
respective owners.
Kontakt
Cognitum | CH, St. [email protected]
abroad sales representatives:
Cognitum | PL, [email protected]+48 22 250 2541
www.cognitum.eu/semantics
Cognitum | UK, [email protected]