MongoDB ve Diğer Veritabanlarında Sharding



Benzer belgeler
NoSQL. SQL ve Daha Fazlası (Not Only SQL) Hazırlayan: Ahmet Cevahir ÇINAR

NoSql ve MongoDB. Saygın Topatan

Red Hat Jboss Data Grid: Uygulamalarınıza Süper Güç Katın!

MongoDB. NoSQL Database

DESTEK DOKÜMANI. Ürün : GO/TIGER2/UNITY2 Bölüm : Sistem Đşletmeni

Cluster i Linux'ta Kümeleme Özgür Yazılım ve Açık Kaynak G 2006 Ali Erdinç Köroğlu

VERİ TABANI YÖNETİM SİSTEMLERİ-II

GittiGidiyor ve Açık Kaynak Kodlu Yazılımlar

Tekir (Ön Muhasebe Yazılımı)

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

SQL ALWAYS ON SİSTEMİNE YENİ CLUSTER NODE EKLENMESİ

III. ULAKNET Eğitim Çalıştayı. Üniversiteler Arası Yüksek Erişilebilirlik. Ali Erdinç Köroğlu Necdet Yücel

LOG SHIPPING Yusuf KAHVECİ Senior Database

PostgreSQL'de Ölçekleme

MongoDB. Doğan Aydın. Eylül, 2011

16 Ekim 2010 Özgür Web Günleri Yeditepe Üniversitesi. Nosql Veritabanları

Hybrid Software Veritabanı ve Sistem 7x24 Destek &Danışmanlık Hizmetleri Veritabanı ve Sistem 7x24 Destek & Danışmanlık Hizmetleri

Büyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları

1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

NoSQL. Buğra Çakır. 23 Mart 13 Cumartesi

Sadece 2 İstekle MySQL Blind SQL Injection. Canberk BOLAT canberk.bolat[-at-]gmail[-dot-]com

PostgreSQL ile Kümeleme Teknikleri

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

1 Temel Kavramlar. Veritabanı 1

Veri Bütünlüğü ve Constraint ler. Veritabanı 1

Veri Tabanı-I 5.Hafta

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

Checkpoint Yönetim Sunucusu Yedekliliği

SQL Server 2008 ile Tanışma"

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

DNS. Linux Yaz Kampı Bolu 2012 Eray Aslan

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Veri Tabanı-I 1.Hafta

ÖZGÜR YAZILIMLAR İLE J2EE

T.C. KÜLTÜR ve TURİZM BAKANLIĞI Kütüphane ve Yayımlar Genel Müdürlüğü KOHA Kütüphane Otomasyon Sistemi

Bölüm 10: PHP ile Veritabanı Uygulamaları

Veri Tabanı Yönetim Sistemleri Bölüm - 02

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi --

Php Programlama Dili MySQL Uygulamaları

Sunucularımızı Gözleyelim. Oğuz oguzyarimtepe ~ gmail.com

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

İleri Seviyede PostgreSQL Yönetimi Devrim GÜNDÜZ. PostgreSQL Geliştiricisi PostgreSQL Markafoni

Bilgisayar Programalamaya Giriş

MOBİL UYGULAMA GELİŞTİRME

Tolga Karakaya

Veritabanı Yönetim Sistemleri I HAFTA 1

Üniversitelerde Özgür Yazılım Kullanım Rehberi

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

Büyük Veri de Türkiye den Uygulama Örnekleri Dr. Güven Fidan

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

Doküman Tabanlı NoSQL Veritabanları: MongoDB ve CouchDB yatay ölçeklenebilirlik karşılaştırması

Araştırma Raporu MUSTAFA AFYONLUOĞLU

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veritabanı. Ders 2 VERİTABANI

Oracle 12c Flex Cluster - Flex ASM

Dosya Saklama Ortamları (Sabit Diskler) Kütük Organizasyonu 1

Linux İşletim Sistemlerine Bakış & Ücretsiz Yazılımlarla Çözümler

«BM364» Veritabanı Uygulamaları

Program Kurulum. Turquaz Muhasebe. İçindekiler

International Conference on Computer Science and Engineering Tekirdağ, Turkey, October 2016

PostgreSQL Veritabanı Sunucusu. Replikasyon Yazılımları: Slony-I Devrim GÜNDÜZ PostgreSQL Geliştiricisi

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

Ağaç Yapıları (Tree Structures) Kütük Organizasyonu 1

Düzenli İfadeler & Kullanım Alanları

Düzenli İfadeler & Kullanım Alanları

VERİTABANI ORGANİZASYONU

İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK-ELEKTRONİK FAKÜLTESİ ULAŞIM ROTASI BELİRLEME YARDIMCISI

VERİ TABANI YÖNETİM SİSTEMLERİ

YZM 2116 Veri Yapıları

Mobil Cihazlarda Gömülü Veritabanlarının Karşılaştırılması: SqLite ve CouchBase Lite

10-Veri Tabanları.

OPNET IT Guru- Güvenlik Duvarı ve Sanal Özel Ağ (Firewalls and Virtual Private Network, VPN)

HP PROCURVE SWITCHLERDE 802.1X KİMLİK DOĞRULAMA KONFİGÜRASYONU. Levent Gönenç GÜLSOY

1. Hafıza Depolama Araçları. 2. Hafıza Çeşitleri. 3. Hafıza Ölçümü. 4. Bilgisayar Performansı

CAN TECİM HEDEF DENEYİM. Tecrübe bütün öğretmenlerin en iyisidir. Publilus Syrus

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

Kerberos Kimlik Denetimi Altyapısı

Ağ programlama (Network programming) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 1

WebSphere Application Server extended Deployment

Postgresql: Web Programcısı için Gündelik İpuçları Postgres 2014 Türkiye

Unutulmuş Özellikler: Oracle Veritabanına Yaptığınız Yatırımı Sonuna Kadar Kullanın

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

PostgreSQL - Yeni dönemdeki yeri

Veri Yönetiminde Son Nokta. Sedat Zencirci, Teknoloji Satış Danışmanlığı Direktörü, Orta Asya ve Türkiye

Semantik Ağ ve Üst Veri Sistemleri İçin Yeni Nesil Veri Tabanı Yönetim Modeli: NoSQL. R. Orçun Madran Atılım Üniversitesi.

Gönderilen uygulama incelendiğinde, belirtilen gerekliliklerin bir kısmının karşılandığı görülmüştür.

HP Yazılım Zirvesi - İstanbul 20 May Wyndham Grand Levent Erdem Alaşehir / Finansbank Güvenlik Olay Korelasyonunda Büyük Veri Kullanımı

PHP+Memory Cache+PostgreSQL Kullanarak Performanslı Veritabanı Uygulaması Geliştirme

Oracle MiniCluster S7-2

ACCESS PLATFORMUNDA SQL

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Veri Ambarından Veri Madenciliğine

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

1 / 6. Barış Karabay. Yazılım Mühendisi. İletişim Bilgileri

İNÖNÜ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ YILI BİTİRME PROJELERİ KONULARI

SDD Dökümantasyonu Versࠀyon 1.0. Movࠀe Predࠀctࠀon Orhan Özgün Ergen Ahmet Saday Berkay Erken

15 Ekim 2010 Özgür Web Günleri Yeditepe Üniversitesi. Erlang Web Çatıları

Transkript:

MongoDB ve Diğer Veritabanlarında Sharding

Who the f**k is talking? Emir Karaburçak emir.karaburcak@spp42.com @kinchil SPP42 de Yazılım Geliştirme Uzmanı Python, Django, Java, JBoss Seam, Play MongoDB, PostgreSQL, Hibernate

Konular Sharding Nedir? Problem Çözüm Shard Veriyi Bölmek Veriyi Dağıtmak Chunk Cluster Shard Key

Veritabanları MongoDB CouchDB Neo4j MySQL

Problem Flickr - 10milyar fotoğraf Instagram - Android uygulamasında ilk 12 saatte 1milyon yeni kullanıcı

Çözüm Dikey Ölçeklendirme Yatay Ölçeklendirme

Sharding Nedir? Basit olarak büyük bir collectionı birkaç sunucu (cluster) arasında bölmek Sharding > Partitioning Her işlem otomatik

Shard nedir? Bir clusterdaki verinin bir alt kümesinden sorumlu 1 veya daha fazla sunucu Eğer 1den fazla sunucu varsa, hepsi aynı veriye sahiptir (replica set)

Veriyi Bölmek Matematiksel olarak; ['a', 'h') 'a' dahil olmak üzere 'a' dan başlayarak 'h' dahil olmamak üzere 'h' ye kadar Belirli bir aralığa 'chunk' denir

Veriyi Dağıtmak Birinci Yöntem 1 shard 1 aralıktan sorumludur ['a', 'f') Shard 1 ['f', 'j') Shard 2 Sorunlu bir yöntem ['j', 'o') Shard 3 ['o', '{') Shard 4

Veriyi Dağıtmak İkinci Yöntem 1 shard 1 veya daha fazla aralıktan sorumludur ['a', 'f') Shard 1 ['a', 'f') ['f', 'j') Shard 2 ['f', 'j') ['j', 'o') Shard 3 MongoDB'nin kullandığı yöntem ['o', '{') Shard 4

Chunklar Nasıl Yaratılır? Aralıkları belirlemek için bir key gereklidir. Bu key in adı "shard key"dir Shard key her bir alan veya alanlardan oluşabilir. Her chunk 200mb dır, yeni bir shard yaratılması için 1 shardın diğerlerinden +9 chunk a sahip olmalıdır

Her chunkın aralığı distinct olmalıdır Herhangi 2 chunk kesişen aralığa sahip olamaz Her chunk bir sonraki chunkin aralığını tatmin etmelidir null < numbers < strings < objects < arrays < binary data < ObjectIds < booleans < dates < regular expressions

Balancer Chunkları bir sharddan diğerine taşır Otomatik balancing Veriyi eşit olarak dağıtmakla ve olabildiğince az veri taşımakla yükümlüdür

mongos Kullanıcı ve cluster arasında köprü Tüm read/write lar mongos a gider Özellikle belirtilmediği takdirde shardlara direkt ulaşılmaz Sharda direkt ulaşmak için query de shard key kullanılır(targeted query) Eğer query de shard key yoksa query tüm shardlara gönderilir(spewed query)

Config Server Config Serverlar, özel mongod lardır Clusterların açıklayıcı bilgilerini tutar Veri taşıma için tüm config serverların ayakta olması gereklidir

Özet Olarak Cluster Veri depolama için; Shard a İstek yönelendirme için; mongos a Durum bilgileri için; Config Server a İhtiyaç duyar

Shard Key Kötü shard key = kötü sharding Shard Key belirlerken en önemli nokta kardinalite Eğer bir shard key in N kadar değeri varsa, en fazla N kadar chunk ve N kadar shard olabilir

Shard Key hakkında Önemli Noktalar Devamlı artan bir shard key iyi bir key değildir Shard Key belirlerken kardinalite en önemli unsurdur Rastgele değerlere sahip bir shard key iyi bir key değildir Coarsely ascending key + search key

Hatalı Shard Key 2010 Foursquare olayı 17 saatlik downtime 3M kullanıcı, 200M checkin, günde 18K yeni checkin

CouchDB Lounge dumbproxy basit requestler (get/put) smartproxy CouchDB requestleri (mapping/reducing)

CouchDB Lounge Hashed DocID Sharding için kullanılan key Keyspace Her node üstünde hashed key için ayrılmış alan

Node Ring

Neo4j Graph Veritabanlarında sharding kolay bir işlem değildir Neo4j High Availability Veri yerine işyükünü ölçeklendirme Apache ZooKeeper

Sharding Neden Kolay Değil? Çok değişken bir yapıya sahip olması Dolaşım performansı vs. Fazla veri yüklemesi

Dolaşım Performansı

Graphlar runtime da çok çabuk ve beklenmedik şekilde değişirler Insert time algorithm ve periyodik rebalancing

Cache Sharding Sharding olmayan sharding? İş yükünü ölçeklendirmek Warm Cache

İş Yükünü Ölçeklendirme Her sunucu aynı dataya sahiptir master + slave

MySQL MySQL Cluster kullanır MySQL Cluster = MySQL server + Ndb (Network Database) cluster

MySQL Cluster Hashed Primary Key Primary + Secondary Fragments