2010-09-04 26 views
11

Büyük veritabanında (yüzlerce GB) çalışıyorum ve Mysql şimdi bana daha fazla veya daha az memnuniyet veriyor. Lansmanda lansmana tereddüt ederim. Neden nosql mysql yerine cassandra ile?

Ne önce her şeyi bilmek istiyorum, bu yüzden DBMS NoSQL bu tür MySQL daha hızlı olması gerekiyordu?

Çeşitli noktası:

  • MySQL aralıksız kolonun sayısındaki değişim, hepsi önceden tanımlanmış olmalıdır. Tablonun yapısında sütunları ayarlanır. NoSQL in, bunlar değiştirilebilir. Sabit bir yapı üzerinde gerçek fark performansı var mı? ve neden ?

  • ilişki performansı için faydalıdır yapmayın. Tamam ama ilişkisel bir tablo Mysql yapmak zorunda değilim. Toplu tabloları kullanırım, yani 'un sadece diğer tablolardan türetilmiş verileri içermesi, çok pahalı olan eklemleri önlemek için I . Yine Mysql'de bu modeli kullanırsam hangi seviye performans farkları? Bir örnek vermek gerekirse, http://www.rackspacecloud.com/blog/2010/05/12/cassandra-by-example/ yazarı, USERLINE pusher mesajındaki follower'ın X sayısını bir kere ekler. Bunu MySQL'de yapabilirim.

  • Ölçeklenebilirlik, ölçeklenebilirlik, ölçeklenebilirlik ... I like it cassandra'yım bana farklı sunucularda (SAN olmadan) benim verileri depolamasına izin do? Burada çoğaltmadan bahsetmiyorum, birden fazla fiziksel sunucuda tek bir NoSQL sunucusundan bahsediyorum. Hesaplamalarda canlı olarak. MySQL, SUM, AVG ... gibi diğer işlevlerdeki verilerimi yeniden toplamam için çok yararlı olan işlevler sunuyor. Ben eşdeğer cassandra görmedim? Dizinler hakkında ne olabilir? Mysql'de, birindeki birkaç alanı endeksler. Örneğin, tablolarımın birden çok sütun üzerinde bir birincil anahtarı var ve ben seçiyorum işlevsel olarak. cassandra nasıl yazılır? Her satır için tek bir tanımlayıcı için birleştirildi mi? Sanırım endekslerin yönetimini tam olarak kavramadım. Entegrasyon veya upstream için yeniden hesaplanıyor mu?

  • asenkron istekleri. Bana göre yanlış bir argüman, Mysql INSERT/UPDATE LOW_PRIORITY ile yapılabilir.

Sanırım etrafta dolaşıyorum. Aydınlattığın için teşekkür ederim. Gerçekten burada elma ve portakal kıyaslıyorsun - insanları bir araya Cassandra ve MySQL gibi veri sağlayıcıları karşılaştırmak neden

cevap

18

Gerçekten anlamıyorum.

Evet, NoSQL çözümleri bazı durumlarda SQL daha iyi performans verebilir. Ancak bu hızı sağlayan nedenini unutmayın - SQL'de sıkça kullandığınız birkaç kontrolden vazgeçerler. Örneğin, bir NoSQL sisteminde işlemler gibi şeyler görmezsiniz, ne de bir SQL sisteminin bir parçası olarak katıldığınız birleştirme ve veri toplama özelliklerine sahip olursunuz. Verilerin tutarlılığı konusunda çok az garanti alıyorsunuz.

Uygulamaların% 99'u için zaman ve çabaya değmez.Eğer facebook ya da twitter iseniz, büyük miktarlarda yapısal olmayan veriye sahipseniz, bir şeylerin karışıklıklarında gerçekten bir veri kaybettiğinizde veya umursamamanız durumunda, verilerin ne zaman kullanıldığına dair gecikmeleriniz varsa, NoSQL sadece iyi. Bununla birlikte, uygulamaların büyük çoğunluğu için hala SQL ile yapmalısınız. Başvurunuz SQL üstünde haberi neden ölçeklenebilirlik gelince

, yığın taşması veya Ebay gibi muazzam sitesi SQL üstünde çalışabilir, ben görmüyorum.

+0

O mysql cassandra (Aksi Bozunmamış verileri) karşılaştırıldığında edersiniz olamaz görmüyorum verilen veri yapısı eşit olduğu durumlarda performansta böyle bir fark vardır neden anlamıyorum. Gerçek şu ki SAS HD 15k tr/dak hızında çalışıyorum ve boş bir alandaki boş alanımı bir sunucuda buluyorum. Bu yüzden bir SAN (çok pahalı bir çözüm) oluşturma veya bir depolama-ölçeklendirilebilir DBMS üzerinde hareket etme seçeneğim var (ve en iyisi optimize edilmişse o zaman en hızlıdır), ya da yine hedef veriyi içeren sunucuyu hedef alan bir yazılım çözümü (ama dev için çok uzun zaman). – Xorax

+1

@Xorax: "Veri yapısının eşit olduğu durumlarda" ne demek istiyorsun? Önemli performans farkları görüyorsanız, veri yapıları büyük olasılıkla eşit değildir. SQL motorlarının çoğunu kolayca geçemezsiniz. SQL uygulamanız için çok yavaşsa, doğru yerlere dizin eklemeniz gerektiğinden şüpheleniyorum. Ya da, verilerinizi biraz denormalize etmeniz gerekiyor. –

+1

@BillyONeal Burada çok sağlam bir nokta var, neden geçiş yapmak için bir nokta olmadığı zaman MySQL'ten başka bir DBMS'ye geçmek gerekiyor, ancak bazen tek bir DBMS'ye güvenmek gerektiği gibi meyve kadar dolu olamaz. Twitter şu anda tüm kullanıcı veri gereksinimleri için MySQL ve analitik araçları için Cassandra kullanıyor. – FaizanRabbani

3

Evet, kesinlikle ayar MySQL size üstlerin bir sürü azaltarak performansı vermek için olabilir. NoSQL, ilk başta onları etkinleştirmek için özelliğe sahip olmamak kaydıyla ek yükleri keser. NoSQL arasında

uygulamaları geleneksel SQL yapısından çok farklıdır. SQL'ler, normalleştirilmiş şema yapıları ve katılma sorgularına sahip olma yeteneği ile OLTP performansı için varsayılan olarak ayarlanmıştır. Diğer taraftan NoSQL iyi bir hızlı okuma/yazma yapısıdır. Gerçekten iyi bir örnek, twitter/facebook'ta bir etkinlik akışı olacaktır (Twitter/FB'nin NoSQL kullanıp kullanmadığını bilmiyorum).

+0

Cassandra başlangıçta facebook tarafından geliştirildi, dolayısıyla NoSql kullanıyorlar –

0

playOrm daha OLTP sistemleri NoSQL sistemleri üzerine olsun yardımcı oluyor. Çok SQL gibi ama farklılıklar var. Büyümeyi beklediğiniz tabloları ÇOK BÜYÜK boyutlara ayırmanız ve sonra bu bölümleri sorgulayabilirsiniz. Hatta bölümlerde birleştirebilirsiniz. Bölüm boyutlarınızı tipik RDBMS tablolarıyla aynı boyutta tutuyorsunuz ve kalp isteğinize göre ölçeklendirebilirsiniz.

böylece indeksleme ve hesaplama soruları için ben daha araçlar NoSQL sistemlerde inşa edilecek düşünüyorum. Her neyse, bu sizin sorunlarınız için tek bir çözüm olabilir.