NoSQL Sunumu

3,578 views
3,450 views

Published on

Author: Sarper Aydogan

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,578
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
81
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

NoSQL Sunumu

  1. 1. Sarper Aydoğan – Turkcell Teknoloji Staj’2010
  2. 2. No to SQL Not Only SQL <ul><li>Var olma Sebebi? </li></ul><ul><li>Sürekli artan veriyi ölçeklendirme -> </li></ul><ul><li>Artan karmaşık çoğa – çok (many to many) ilişkiler </li></ul><ul><li>Çok öğeli sabit ilişkisel şemalar yerine önceden belirlenmemiş ve genişletilebilir veriler veri şeması kullanıyor olması </li></ul><ul><li>Veri karmaşık “Joinler” kullanılmadan sadece primary key’e dayalı olarak tekrar tekrar çağırılıyorsa. </li></ul>RDMS Performans Performans Data Karmaşıklığı Maaş Listesi Sosyal Networkler Web Uygulamaları
  3. 3. ilişkisel Yatay ve Dikey ölçeklendirmeye izin veren (Yeni modüllerin ve datanın rahatça eklenebilmesi) Dağınık JOIN ACID Atomicity, Consistency, Isolation, Durability Büyük datalar? Ölçeklendirme & Kaynaklar? CAP Consistency Availability Partition Tolerance
  4. 4. Key Value Stores <ul><li>Büyük data bloklarını tutmak ve ölçeklendirmek için kullanılır. </li></ul>A C D B <ul><li>Her unique anahtar değeri bir değeri referans eder. (HashMap) </li></ul><ul><li>Database’in Değerden haberi yok </li></ul><ul><li>Memcached’den farklı olarak replication, versioning, locking ve sorting gibi özellikler sunar. </li></ul>
  5. 5. Voldemort <ul><li>Open Source (Linkedin Katkılarıyla) </li></ul><ul><li>Veri otomatik, parçalar haline getirilip, parçalar birden çok servera dağıtılıyor. </li></ul><ul><li>Concurreny problemleri “multi-version concurrency control” (MVCC) ile çözülüyor. </li></ul><ul><li>Gelişmiş Failure Handling </li></ul>
  6. 6. Document Database <ul><li>Her veriyi bir doküman olarak saklar. Key Value Store’la benzerlik gösterir. Farklı olarak </li></ul><ul><ul><li>Key- Value Store’dan daha karmaşık yapıda veri saklar (Arrayler, objeler..) </li></ul></ul><ul><ul><li>Multiple index’lemeyi destekler </li></ul></ul><ul><ul><li>RDBMS’den farklı olarak veri tabanı ve tablolar yok </li></ul></ul><ul><ul><li>CouchDB, MongoDB </li></ul></ul>{ “_id” : “1″, “name” : “A”, “groupid” : “1″, } { “_id” : “2″, “name” : “B”, “groupid” : “1″, }
  7. 7. <ul><li>Key –Value Store, Document DB ve RDBMS özelliklerini taşır </li></ul>Dinamik Query’ler Indexing <ul><li>Hızlı okuma/yazma için dizayn edilmiştir. </li></ul><ul><li>Tanıdık veri Tipleri Kullanır -> Array, Binary, Boolean, DateTime, Null, String, Embedded Object </li></ul>Temel veri birimi -> Document <ul><li>Veriye ulaşma ve değiştirme yolları </li></ul>indexler Dinamik Query’ler MapReduce
  8. 8. CouchDB & MongoDB <ul><li>Database -> Documents </li></ul><ul><li>Concurrency -> MVCC </li></ul><ul><li>Data Types -> string,number,boolean,array,object </li></ul><ul><li>Query Method -> Map/reduce </li></ul><ul><li>Database -> Collections(Tables) -> Documents </li></ul><ul><li>Concurreny -> Yerinde Güncelleme </li></ul><ul><li>Data Types -> string, int, double, boolean, date, bytearray, object, array, others </li></ul><ul><li>Query Method -> Dynamic; object-based query language  </li></ul>
  9. 9. Wide Column Stores <ul><li>Google BigTable Clone </li></ul><ul><li>Satır ve sütunlara dayanan ölçeklendirme </li></ul><ul><li>Her key birden çok sütunla ilişkilenir </li></ul><ul><li>Dağınık ve birden çok boyutludur </li></ul><ul><li>Yarı ilişkisel yapıya sahiptir </li></ul><ul><li>Ölçeklendirme, satırları ve sütunları parçalayarak meydana gelir </li></ul><ul><ul><ul><ul><li>Satırlar, primary key’e bağlı olarak bölünür. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Sütunlar, sütun gruplarına bağlı olarak bölünür. </li></ul></ul></ul></ul>
  10. 10. HBase <ul><li>Hadoop Database – büyük datasetlerine hızlı read/write </li></ul><ul><li>HDFS (Hadoop Distributes File System) üzerinde çalışır </li></ul><ul><li>Concurrency - Locks </li></ul><ul><li>BTree- Sıralama Hızlı </li></ul><ul><li>Hadoop MapReduce’lariyla başa çıkabilecek Hbase tabloları* </li></ul><ul><li>Veri sıralanmış biçimde saklanır </li></ul><ul><li>Real Time Query’ler için Optimization </li></ul><ul><li>Twitter, Yahoo!** </li></ul><ul><li>*MapReduce- Büyük datasetlerin çözülmesi </li></ul><ul><li>**http://wiki.apache.org/hadoop/Hbase/PoweredBy </li></ul>
  11. 11. Map and Reduce
  12. 12. Hbase & Cassandra <ul><li>Java tabanlı </li></ul><ul><li>Concurrency - Locks </li></ul><ul><li>BTree- Sıralama Hızlı </li></ul><ul><li>Hadoop Dosyalamasını Kullanır </li></ul><ul><li>Java tabanlı </li></ul><ul><li>Concurrency - MVCC </li></ul><ul><li>Ordered Hash Index- Btree’den daha yavaş </li></ul><ul><li>Otomatik failure detection ve full recovery </li></ul>Mevcut Klonlar BigTable ‘ın transaction oranına ulaşamamıştır. Google Maps, Earth, Gmail, YouTube inbox search
  13. 13. Graph Database <ul><li>Veriyi tablolar yerine grafik yapıları (node, edge, property) üzerinde değerleri saklayan database çeşidi. Key – Value yapısına benzetilebilir. </li></ul><ul><li>RDBMS –Static ve basit veri Graph – Dinamik ve karmaşık veri </li></ul>
  14. 14. <ul><li>Neo4j’deki tüm operasyonlar transactionlar üzerinden çalışır ve tüm transactionlar ACID’i destekler. </li></ul>Node firstNode = graphDb.createNode(); Node secondNode = graphDb.createNode(); Relationship relationship = firstNode.createRelationshipTo( secondNode, MyRelationshipTypes.KNOWS ); firstNode.setProperty( &quot;message&quot;, &quot;Hello, &quot; ); secondNode.setProperty( &quot;message&quot;, &quot;world!&quot; ); relationship.setProperty( &quot;message&quot;, &quot;brave Neo4j&quot;); Hello World brave Neo4j
  15. 15. Name Type Concurreny Data Storage Voldemort Key- Value MVCC RAM Hbase Wide Column Locks Hadoop Cassandra Wide Column MVCC Disk CouchDB Document MVCC Disk MongoDB Document Field-Level Disk Neo4j Graph Locks Disk
  16. 16. NoSQL Avantajları <ul><li>OLTP Projelerinde hızlı read/write’a olanak vermesi </li></ul><ul><li>Kolay ölçeklendirebilme ve dağıtım yapabilme </li></ul><ul><li>İlişisel db’lere göre bazı projelerde kolay implementation sağlaması </li></ul>
  17. 17. NoSQL Dezavantajları <ul><li>Data Integrity -> Uygulama Katmanına Dayalı </li></ul><ul><li>İlişkisel DB’ler kadar mature sistemler değiller </li></ul><ul><li>Standard bir dilin olmaması </li></ul>

×