Sarper Aydoğan - TurkcellTeknolojiStaj 2010
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 SQLRDMS PerformansMaaş ListesiWeb UygulamalarıNot Only SQLPerformansSosyal NetworklerData Karmaşıklığı
Büyük datalar?ConsistencyJOINAvailabilityilişkiselCAPPartitionToleranceDağınık ACIDAtomicity, Consistency, Isolation, DurabilityYatay ve Dikey ölçeklendirmeye izin veren(Yeni modüllerin ve datanın rahatça eklenebilmesi)Ölçeklendirme & Kaynaklar?
KeyValueStoresBüyük data bloklarını tutmak ve ölçeklendirmek için kullanılır.AHer uniqueanahtar değeri bir değeri referans eder. (HashMap)
Database’in Değerden haberi yok
Memcached’den farklı olarak replication, versioning, locking ve sorting gibi özellikler sunar.BCD
VoldemortOpenSource (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
DocumentDatabaseHer veriyi bir doküman olarak saklar. KeyValueStore’la benzerlik gösterir. Farklı olarakKey- ValueStore’dan daha karmaşık yapıda veri saklar (Arrayler, objeler..)Multipleindex’lemeyi desteklerRDBMS’den farklı olarak veri tabanı ve tablolar yokCouchDB, MongoDB{“_id” : “1″,“name” : “A”,“groupid” : “1″,}{“_id” : “2″,“name” : “B”,“groupid” : “1″,}
Key –ValueStore, Document DB ve RDBMS özelliklerini taşırDinamik Query’lerIndexingTemel veri birimi -> DocumentHızlı okuma/yazma için dizayn edilmiştir.
Tanıdık veri Tipleri Kullanır -> Array, Binary, Boolean, DateTime, Null, String, EmbeddedObjectindexlerVeriye ulaşma ve değiştirme yollarıDinamik Query’lerMapReduce
CouchDB & MongoDBDatabase -> DocumentsConcurrency -> MVCCData Types -> string,number,boolean,array,objectQueryMethod -> Map/reduceDatabase -> Collections(Tables)  -> DocumentsConcurreny -> Yerinde GüncellemeData Types -> string, int, double, boolean, date, bytearray, object, array, othersQueryMethod -> Dynamic; object-basedquerylanguage 
WideColumnStoresGoogleBigTableCloneSatır ve sütunlara dayanan ölçeklendirmeHer key birden çok sütunla ilişkilenirDağınık ve birden çok boyutludurYarı ilişkisel yapıya sahiptirÖlçeklendirme, satırları ve sütunları parçalayarak meydana gelirSatırlar, primarykey’e bağlı olarak bölünür.Sütunlar, sütun gruplarına bağlı olarak bölünür.
HBaseHadoopDatabase – büyük datasetlerine hızlı read/writeHDFS (HadoopDistributes File System) üzerinde çalışırConcurrency - LocksBTree- Sıralama HızlıHadoopMapReduce’lariyla başa çıkabilecek Hbase tabloları*Veri sıralanmış biçimde saklanırReal Time Query’ler için OptimizationTwitter, Yahoo!***MapReduce- Büyük datasetlerin çözülmesi**http://wiki.apache.org/hadoop/Hbase/PoweredBy
MapandReduce
Hbase & CassandraJava tabanlıConcurrency - LocksBTree- Sıralama HızlıHadoop Dosyalamasını KullanırJava tabanlıConcurrency - MVCCOrderedHashIndex- Btree’den daha yavaşOtomatik failuredetection ve fullrecoveryinboxsearchMevcut Klonlar BigTable ‘ıntransaction oranına ulaşamamıştır.GoogleMaps, Earth, Gmail, YouTube
GraphDatabaseVeriyi 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
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 Neo4jHelloWorld

No SQL

  • 1.
    Sarper Aydoğan -TurkcellTeknolojiStaj 2010
  • 2.
    Var olma Sebebi?Sürekliartan 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 SQLRDMS PerformansMaaş ListesiWeb UygulamalarıNot Only SQLPerformansSosyal NetworklerData Karmaşıklığı
  • 3.
    Büyük datalar?ConsistencyJOINAvailabilityilişkiselCAPPartitionToleranceDağınık ACIDAtomicity,Consistency, Isolation, DurabilityYatay ve Dikey ölçeklendirmeye izin veren(Yeni modüllerin ve datanın rahatça eklenebilmesi)Ölçeklendirme & Kaynaklar?
  • 4.
    KeyValueStoresBüyük data bloklarınıtutmak ve ölçeklendirmek için kullanılır.AHer uniqueanahtar değeri bir değeri referans eder. (HashMap)
  • 5.
  • 6.
    Memcached’den farklı olarakreplication, versioning, locking ve sorting gibi özellikler sunar.BCD
  • 7.
    VoldemortOpenSource (Linkedin Katkılarıyla)Veriotomatik, 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.
    DocumentDatabaseHer veriyi birdoküman olarak saklar. KeyValueStore’la benzerlik gösterir. Farklı olarakKey- ValueStore’dan daha karmaşık yapıda veri saklar (Arrayler, objeler..)Multipleindex’lemeyi desteklerRDBMS’den farklı olarak veri tabanı ve tablolar yokCouchDB, MongoDB{“_id” : “1″,“name” : “A”,“groupid” : “1″,}{“_id” : “2″,“name” : “B”,“groupid” : “1″,}
  • 9.
    Key –ValueStore, DocumentDB ve RDBMS özelliklerini taşırDinamik Query’lerIndexingTemel veri birimi -> DocumentHızlı okuma/yazma için dizayn edilmiştir.
  • 10.
    Tanıdık veri TipleriKullanır -> Array, Binary, Boolean, DateTime, Null, String, EmbeddedObjectindexlerVeriye ulaşma ve değiştirme yollarıDinamik Query’lerMapReduce
  • 11.
    CouchDB & MongoDBDatabase-> DocumentsConcurrency -> MVCCData Types -> string,number,boolean,array,objectQueryMethod -> Map/reduceDatabase -> Collections(Tables) -> DocumentsConcurreny -> Yerinde GüncellemeData Types -> string, int, double, boolean, date, bytearray, object, array, othersQueryMethod -> Dynamic; object-basedquerylanguage 
  • 12.
    WideColumnStoresGoogleBigTableCloneSatır ve sütunlaradayanan ölçeklendirmeHer key birden çok sütunla ilişkilenirDağınık ve birden çok boyutludurYarı ilişkisel yapıya sahiptirÖlçeklendirme, satırları ve sütunları parçalayarak meydana gelirSatırlar, primarykey’e bağlı olarak bölünür.Sütunlar, sütun gruplarına bağlı olarak bölünür.
  • 13.
    HBaseHadoopDatabase – büyükdatasetlerine hızlı read/writeHDFS (HadoopDistributes File System) üzerinde çalışırConcurrency - LocksBTree- Sıralama HızlıHadoopMapReduce’lariyla başa çıkabilecek Hbase tabloları*Veri sıralanmış biçimde saklanırReal Time Query’ler için OptimizationTwitter, Yahoo!***MapReduce- Büyük datasetlerin çözülmesi**http://wiki.apache.org/hadoop/Hbase/PoweredBy
  • 14.
  • 15.
    Hbase & CassandraJavatabanlıConcurrency - LocksBTree- Sıralama HızlıHadoop Dosyalamasını KullanırJava tabanlıConcurrency - MVCCOrderedHashIndex- Btree’den daha yavaşOtomatik failuredetection ve fullrecoveryinboxsearchMevcut Klonlar BigTable ‘ıntransaction oranına ulaşamamıştır.GoogleMaps, Earth, Gmail, YouTube
  • 16.
    GraphDatabaseVeriyi tablolar yerinegrafik 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 operasyonlartransactionlar ü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 Neo4jHelloWorld