Büyük Veriyi Saklama

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    All hail to Tux
    sandman
    sandman's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    DB yapına göre değişir senin büyük veri dediğin şey aslında gayet küçük :)

    MySQL veya Postgresql kullanabilirsin eğer yok uğraşmam dersen AWS ve Azure'un direk DBaaS hizmetleri var sorgulama sayına göre ücretlendiriyor.


    Mühendis kahveyi projeye dönüştüren bir insan evladıdır.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KuZeTaR
    KuZeTaR's avatar
    Kayıt Tarihi: 26/Aralık/2009
    Erkek
    sandman bunu yazdı

    DB yapına göre değişir senin büyük veri dediğin şey aslında gayet küçük :)

    MySQL veya Postgresql kullanabilirsin eğer yok uğraşmam dersen AWS ve Azure'un direk DBaaS hizmetleri var sorgulama sayına göre ücretlendiriyor.

    Aslında cloud kullanmak istiyorum ama normal hostinge göre 2 3 kat daha pahalı, DBaaS hiç kullanmadım, azure'un 610 liralık deneme sürümünü aldım, bi bakıcam, teşekkürler:)

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Olgunisik
    Olgunisik's avatar
    Kayıt Tarihi: 11/Ocak/2010
    Erkek

    Tüm veriler için tek bir sql tipi düşünme. birbirinden bağımsız veriler varsa her biri için ihtiyacı karşılayacak sql tipi düşün. 

    Mesela ziyaret edilen web sayfalarını log lama ile ürün sipariş giriş-çıkışı için gereken sql farklı olsun. 

    Bu kadar yoğun çalışmada klasik mekanik harddisler yerine ssd kullanman performans da çok fark eder. Mesela saat başı yedek alarak mekanik harddislerde yedeğin olsun ama aktif çalışma ssd de olsun.  

     

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    SerYolcu bunu yazdı

    PostgreSql i tavsiye edebilirim.. Sıralamada MySql in üstünde yeralır...

    Neye göre dediniz bunu ?

     


    Hello, i am nothing. I come from Neverland.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam büyük veri (big data) denilen şey senin sorduğun şey değildir :) sağlayacağın veri çok küçük aslında o yüzden öyle kompleks çözümler aramana gerek yok..

    mesela kullanıcıların her girip çıktığı sayfayı loglayacaksan iki tane int türünden field yeterli (kullanıcı_id, sayfa_id)

    hatta işi daha basitleştirmek için o sayfaya kaç kere girip çıktığını da aynı yerde tutabilirsin kullanici_id,sayfa_id, erisim_sayisi)

    milyonlarca üyen yoksa bu tarz bir yapı ile kolaylıkla yönetim yapabilirsin.

    hız açısından v.s. de sorun olmaz. 

    öncelikle indexleme nin nasıl yapıldığını ve doğru dürüst indexlemenin nasıl yapıldığını öğrenmen lazım.Veritabanını oluştururken düzgün indexleyebilirsen her şey daha performanslı olur.

    Sorgulardaki costları da ona göre hesap edersen tertemiz bir sistem ortaya çıkar.

    Bu işler biraz ileri seviye veritabanı işlemlerine giriyor, ancak öğrenmek istersen bu yolda ilerlemeni tavsiye ederim.

    bakman gereken kavramlar:

    clustured/unclustured indexing

    primary/secondy index

    hash-based index, tree-based index (b+ trees,r tree),

    ayrıca sorgu için logic query plan, physical query plan (bunlarla birlikte cost ve cost parametreleri)

    big data olayına gelirsek, bildiğim kadarıyla google big table dışardaki kullanıcılara açık bir sistem değil, o yüzden cassandra, google big table dan esinlenerek tasarlanmıştır. Ancak bu iş öyle çok veri saklayayım mantığından ziyade, no single point of failure olayı vardır. Sanırım sen de bunu kastetmek istememişsindir ama bazı arkadaşlar bunla ilgili bir şeyler yazınca açıklama ihtiyacı hissettim.

     

    velhasıl kelam,  herhangi bir db kullanabilirsin (mysql olabilir), bunun yanında tablo yapılarını düzgün oluştur, üstte yazdığım araştırman gereken şeylerden bir şeyler öğrenebilirsen ufkunu genişletir ve db ye daha farklı bir gözle bakarsın. Çok fazla detaya da girmene gerek yok aslında, bunlar db yöneticisinin işleri ama tr de maalesef herkese her iş yaptırılabiliyor :)

    kolay gelsin

     

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KuZeTaR
    KuZeTaR's avatar
    Kayıt Tarihi: 26/Aralık/2009
    Erkek
    unbalanced bunu yazdı

    hocam büyük veri (big data) denilen şey senin sorduğun şey değildir :) sağlayacağın veri çok küçük aslında o yüzden öyle kompleks çözümler aramana gerek yok..

    mesela kullanıcıların her girip çıktığı sayfayı loglayacaksan iki tane int türünden field yeterli (kullanıcı_id, sayfa_id)

    hatta işi daha basitleştirmek için o sayfaya kaç kere girip çıktığını da aynı yerde tutabilirsin kullanici_id,sayfa_id, erisim_sayisi)

    milyonlarca üyen yoksa bu tarz bir yapı ile kolaylıkla yönetim yapabilirsin.

    hız açısından v.s. de sorun olmaz. 

    öncelikle indexleme nin nasıl yapıldığını ve doğru dürüst indexlemenin nasıl yapıldığını öğrenmen lazım.Veritabanını oluştururken düzgün indexleyebilirsen her şey daha performanslı olur.

    Sorgulardaki costları da ona göre hesap edersen tertemiz bir sistem ortaya çıkar.

    Bu işler biraz ileri seviye veritabanı işlemlerine giriyor, ancak öğrenmek istersen bu yolda ilerlemeni tavsiye ederim.

    bakman gereken kavramlar:

    clustured/unclustured indexing

    primary/secondy index

    hash-based index, tree-based index (b+ trees,r tree),

    ayrıca sorgu için logic query plan, physical query plan (bunlarla birlikte cost ve cost parametreleri)

    big data olayına gelirsek, bildiğim kadarıyla google big table dışardaki kullanıcılara açık bir sistem değil, o yüzden cassandra, google big table dan esinlenerek tasarlanmıştır. Ancak bu iş öyle çok veri saklayayım mantığından ziyade, no single point of failure olayı vardır. Sanırım sen de bunu kastetmek istememişsindir ama bazı arkadaşlar bunla ilgili bir şeyler yazınca açıklama ihtiyacı hissettim.

     

    velhasıl kelam,  herhangi bir db kullanabilirsin (mysql olabilir), bunun yanında tablo yapılarını düzgün oluştur, üstte yazdığım araştırman gereken şeylerden bir şeyler öğrenebilirsen ufkunu genişletir ve db ye daha farklı bir gözle bakarsın. Çok fazla detaya da girmene gerek yok aslında, bunlar db yöneticisinin işleri ama tr de maalesef herkese her iş yaptırılabiliyor :)

    kolay gelsin

     

    Söylediğin terimlerin hiç birisini bilmiyorum :D bi proje yapıcaz diye altından üstünden her yerine giricez sanırım :D çok teşekkür ederim, teker teker bakmaya başlayayım, çok teşekkür ederim:)

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KuZeTaR
    KuZeTaR's avatar
    Kayıt Tarihi: 26/Aralık/2009
    Erkek
    Olgunisik bunu yazdı

    Tüm veriler için tek bir sql tipi düşünme. birbirinden bağımsız veriler varsa her biri için ihtiyacı karşılayacak sql tipi düşün. 

    Mesela ziyaret edilen web sayfalarını log lama ile ürün sipariş giriş-çıkışı için gereken sql farklı olsun. 

    Bu kadar yoğun çalışmada klasik mekanik harddisler yerine ssd kullanman performans da çok fark eder. Mesela saat başı yedek alarak mekanik harddislerde yedeğin olsun ama aktif çalışma ssd de olsun.  

     

    Evet çok mantıklı, yedekleme işini falan hiç düşünmemiştim, ama dediğin şekilde yapmak çok mantıklı, bi bilene sormakta her zaman fayda varmış, teşekkürler:)

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SerYolcu
    SerYolcu's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek
    ozgunlu bunu yazdı
    SerYolcu bunu yazdı

    PostgreSql i tavsiye edebilirim.. Sıralamada MySql in üstünde yeralır...

    Neye göre dediniz bunu ?

      Bana göre Veri Tabanı sunucu sistemleri sıralaması...

     1 - Oracle (Ücretli)

     2 - Microsoft Sql Server (Ücretli)

     3 - PostgreSql (Ücretsiz)

     Konunun uzmanlarından elde edilmiş bilgiler diyelim...


    Ondan çocuk olmamıştır (Kimsenin babası değildir). Kendisi de doğmamıştır (kimsenin çocuğu değildir). İhlas Suresi 3 üncü ayette bunlar yazar.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Buremba
    Buremba's avatar
    Kayıt Tarihi: 16/Haziran/2006
    Erkek

    aynen öyle big data'da verinin saklanma şeklinden tut işlenme şekline kadar herşey farklı. saklanma şekli genel olarak join işlemi pahalı olmasından dolayı çok sütunlu büyük tablolar kullanılıyor. yani atıyorum ürünlerin var ve ziyaretçilerin var sayfa görüntülemeleri incelemek istiyorsun kullanıcıların cinsiyetlerine göre ama 100m üzerinde eşsiz ziyaretçin var, normal şartlar altında join yaparsan sorgulama motoru 100m id içeren bi hash table oluşturup her ziyaret aksiyonu için buna map etmeye çalışır ki çok fazla memory gerektiriyor bu işlem. dolasıyla cinsiyet bilgisini de ziyaret aksiyonunun içine gömüyorsun ve join yapmaktan kurtuluyorsun lakin 20 30 sütunlu tabloların olmuş oluyor.

    şimdi sql bilgisiyle hareket edersen çok mantıksız geliyor çünkü içinde bir sürü null olacak çok fazla veri dolacak sisteme ama saklama şekli de ona göre değişiyor. normal rdbms'lerde row-oriented yapı var yani her satır ardarda serialize ediliyor, bir sütuna ulaşmak için bütün satırı deserialize etmen lazım ki 30 sütunlu tabloda sıkıntı olacaktır bu. big data için de columnar-oriented yapı var, bunda sütunlar ardarda serialize ediliyor, run-length encoding tarzı algoritmalar uygulanıyor raw veri üzerinde ve sıkıştırılıp saklanıyor bir sütunun verisi.

    sen 30 sütunluk tabloda 2 sütun çekip birin group by yapınca veritabanı gidip diskten 2 farklı lokasyondan veriyi memory'ye map edip decompress işleminden geçiriyor ve group by'ını güzel güzel yapıyor. ama bu yöntemin dezavantajı da "select * from bilmemne" tarzı sorgular sıkıntı, delete update gibi işlemler de aynı şekilde çok pahalı, insert işleminde de teker teker yapmak yerine 10k satır birden yapmak gerekiyor yoksa öbür türlü de pahalı oluyor.

    bu işin veriyi saklama yöntemi bir de sorgulama yöntemi var. rdbms'ler genelde dikey ölçeklenir yani sistemin performansını geliştirmek için gidip daha büyük makina alırsın ama daha iyi makinanın da bir sınırı var tabi. big data'da da yatay ölçekleme yöntemi var yani gidip yeni makina koyarsın sisteme veriyi de aralarında paylaştırırsın. postgresql mssql gibi veritabanlarının sorgulama motorları veriye ulaşmak için diskten bloklar okur ve ona göre tasarlanmıştır ama dağıtık sistemde önce distributed query plan oluşturursun ona göre hangi bilgisayarın hangi veriyi işleyip cevabı nereye göndereceğin belli edersin sonra ayrıca her sunucu kendine  göre query plan oluşturup veriyi ona göre işler.

    gene rdbms'lerdeki gibi single point of failure olayından kaçınmak için veriyi birden fazla bilgisayarda tutarsın. partitioning, sharding vs gibi teknikler kullanırsın belli verilere daha hızlı ulaşabilmek için onda pek değişiklik yok. big data'da hadoop'u duymuşsundur, spark gibi in-memory sistemler geliştirildi son zamanlarda ama bunlar veriyi işlemek için kullanılan motorlar. veritabanı olarak impala, prestodb, cassandra falan var ben prestodb ile uğraşıyorum bu sıralar.

    bu konularla ilgili olan/kendini geliştirmek isteyen varsa ben de bu alanla uğraşıyorum açık kaynak bi proje geliştiriyorum ve bu aralar şirketleşme çalışmaları vs. falan var. açık kaynak projeye burdan bakabilirsiniz: https://github.com/buremba/rakam


    . . .. . ... .
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    Ccaglayan bunu yazdı

    öncelikle nerde değil hangi platfromda diye sorman daha doğru olur. Logları NoSQL bir yapıda tutabilirsin verileri hızlı işlemek için. Geri kalanlar için MySQL kullanabilirsin şuan 4-5gb lık verilerde ve güzel bir ayarla sorun çıkarmadan kullanabilmekteyiz tabi amazonda ayrı bir instance açarak sadece mysql olarak ayarladığımız makinada. Burda çoğu şirketin satış ve giren çıkan bilgisi tutulmakta.

    artı olarak arama bazlı işler yapıcaksanda hadoop veya solr ı öneririm 300gb lık text veri içinden verileri getirmesi gayet hızlıdır sanki 1-2 mb lık veritabanında sorgu yaparcasına hızlı tepki vermektedir.

    hadoop ya da solr' dan hangisine alışmak daha kolaydır ? Hiç nosql yapı kullanmadım.


    Hello, i am nothing. I come from Neverland.
Toplam Hit: 3255 Toplam Mesaj: 26
büyük veri