2. Var olma Sebebi? Sürekli artan veriyi ölçeklendirme -> Artan karmaşık çoğa – çok (manytomany) ilişkiler Çok öğeli sabit ilişkisel şemalar yerine önceden belirlenmemiş ve genişletilebilir veriler veri şeması kullanıyor olması Veri karmaşık “Joinler” kullanılmadan sadece primarykey’e dayalı olarak tekrar tekrar çağırılıyorsa. No to SQL RDMS Performans Maaş Listesi Web Uygulamaları Not Only SQL Performans Sosyal Networkler Data Karmaşıklığı
3. Büyük datalar? Consistency JOIN Availability ilişkisel CAP PartitionTolerance Dağınık ACID Atomicity, Consistency, Isolation, Durability Yatay ve Dikey ölçeklendirmeye izin veren (Yeni modüllerin ve datanın rahatça eklenebilmesi) Ölçeklendirme & Kaynaklar?
7. Voldemort OpenSource (Linkedin Katkılarıyla) Veri otomatik, parçalar haline getirilip, parçalar birden çok servera dağıtılıyor. Concurreny problemleri “multi-versionconcurrencycontrol” (MVCC) ile çözülüyor. Gelişmiş FailureHandling
8. DocumentDatabase Her veriyi bir doküman olarak saklar. KeyValueStore’la benzerlik gösterir. Farklı olarak Key- ValueStore’dan daha karmaşık yapıda veri saklar (Arrayler, objeler..) Multipleindex’lemeyi destekler RDBMS’den farklı olarak veri tabanı ve tablolar yok CouchDB, MongoDB {“_id” : “1″,“name” : “A”,“groupid” : “1″,} {“_id” : “2″,“name” : “B”,“groupid” : “1″,}
12. WideColumnStores GoogleBigTableClone Satır ve sütunlara dayanan ölçeklendirme Her key birden çok sütunla ilişkilenir Dağınık ve birden çok boyutludur Yarı ilişkisel yapıya sahiptir Ölçeklendirme, satırları ve sütunları parçalayarak meydana gelir Satırlar, primarykey’e bağlı olarak bölünür. Sütunlar, sütun gruplarına bağlı olarak bölünür.
13. HBase HadoopDatabase – büyük datasetlerine hızlı read/write HDFS (HadoopDistributes File System) üzerinde çalışır Concurrency - Locks BTree- Sıralama Hızlı HadoopMapReduce’lariyla başa çıkabilecek Hbase tabloları* Veri sıralanmış biçimde saklanır Real Time Query’ler için Optimization Twitter, Yahoo!** *MapReduce- Büyük datasetlerin çözülmesi **http://wiki.apache.org/hadoop/Hbase/PoweredBy
15. Hbase & Cassandra Java tabanlı Concurrency - Locks BTree- Sıralama Hızlı Hadoop Dosyalamasını Kullanır Java tabanlı Concurrency - MVCC OrderedHashIndex- Btree’den daha yavaş Otomatik failuredetection ve fullrecovery inboxsearch Mevcut Klonlar BigTable ‘ıntransaction oranına ulaşamamıştır. GoogleMaps, Earth, Gmail, YouTube
16. GraphDatabase Veriyi tablolar yerine grafik yapıları (node, edge, property) üzerinde değerleri saklayan database çeşidi. Key – Value yapısına benzetilebilir. RDBMS –Static ve basit veriGraph – Dinamik ve karmaşık veri
17. Neo4j’deki tüm operasyonlar transactionlar üzerinden çalışır ve tüm transactionlarACID’i destekler. NodefirstNode = graphDb.createNode(); NodesecondNode = graphDb.createNode(); Relationshiprelationship = firstNode.createRelationshipTo( secondNode, MyRelationshipTypes.KNOWS ); firstNode.setProperty( "message", "Hello, " ); secondNode.setProperty( "message", "world!" ); relationship.setProperty( "message", "brave Neo4j"); brave Neo4j Hello World
18.
19. NoSQL Avantajları OLTP Projelerinde hızlı read/write’a olanak vermesi Kolay ölçeklendirebilme ve dağıtım yapabilme İlişiseldb’lere göre bazı projelerde kolay implementation sağlaması
20. NoSQL Dezavantajları Data Integrity -> Uygulama Katmanına Dayalı İlişkisel DB’ler kadar mature sistemler değiller Standard bir dilin olmaması