İlişkisel DBMS'mizdeki veriler büyüyor, NoSQL'e geçme zamanı geldi mi?


17

E-Öğrenim amacıyla bir sosyal ağ uygulaması oluşturduk. Laboratuarımızda üzerinde araştırma yaptığımız deneysel bir proje. Bazı durum çalışmalarında bir süredir kullanılmaktadır ve ilişkisel DBMS'mizdeki (SQL Server 2008) veriler artmaktadır. Şimdi birkaç gigabayt ve masalar birbirine oldukça bağlı. Performans hala iyi, ancak diğer seçenekleri ne zaman düşünmeliyiz? Performans meselesi mi?


3
Herhangi bir sosyal ağ için, Neo4j veya OrientDB gibi bir grafik veritabanını şiddetle tavsiye ederim
Apollo

Yanıtlar:


14

Birkaç gigabayt çok " büyük " değildir. Daha çok bir kurumsal DB'nin normal boyutuna benzer. Masalara katılırken PK üzerinden geçtiğiniz sürece, gelecekte bile (günde TB verisi almadığınız sürece) gerçekten iyi çalışmalıdır.

Büyük bir veri ortamında çalışan çoğu profesyonel, büyük veri teriminin başlangıcı olarak ~ 5 TB'ı kabul eder . Ancak o zaman bile, bir sonraki en iyi nosql veritabanını kurmanın her zaman en iyi yolu değildir. Sorununuz için en iyi araçları bulmak için her zaman verilerle arşivlemek istediğiniz görevi (toplam, okuma, arama, benim, ..) düşünmelisiniz.

yani veritabanınızda bir sürü arama yaparsanız, bir solr örneği / kümesi çalıştırmak ve verilerinizi zaman zaman Postgres veya SQL Server gibi bir DBMS'den denormalize etmek ve sadece verileri taşımak yerine solr'a koymak daha iyi olur. kalıcılık ve performans açısından sql'den nosql'e.


10

Bu soruyu cevaplamak için ne tür bir ödün verebileceğinize cevap vermelisiniz. RDBM'ler ASİD uygular . Bu kaynaklar açısından pahalıdır. ACID olan NoSQL çözümü yoktur. Bu fikirlere derinlemesine dalmak için CAP teoremine bakınız .

Bu nedenle, her çözümün verdiği her uzlaşmayı anlamalı ve probleminiz için en uygun olanı seçmelisiniz.


8

Büyük Veri aslında "ne kadar büyük" ile ilgili değildir.

İlk olarak, birkaç gigabayt hiç büyük değil, neredeyse hiçbir şey. Bu yüzden kendinizi rahatsız etmeyin, sisteminiz bence bir süre daha verimli çalışmaya devam edecek.

O zaman verilerinizi nasıl kullandığınızı düşünmelisiniz.

  • SQL yaklaşımı: Her veri değerli, iyi toplanmış ve seçilmiştir ve yüksek değerli ve iyi yapılandırılmış verilerin depolanmasına odaklanmaktadır. Bu maliyetli olabilir, her şey ara bağlantıdır ve iyi yapılandırılmış sistem ve fonksiyonel veriler için iyidir.
  • Büyük Veri yaklaşımı: Büyük verilerde, sahip olduğu değerden bağımsız olarak hemen hemen her şeyi saklarsınız ve daha sonra aktif bir analiz işlemi yaparsınız. Her şey bağlantılı değil, kopyalanıyor. Diyelim ki bir blog girişim var. Büyük Veri'de yazarına bir bağlantı olmayacaktır, ancak yazar blog girişinin içine yerleştirilecektir. Çok daha ölçeklenebilir, ancak farklı ve daha karmaşık bir yaklaşım gerektirir.

Uygulamanız tarafından saklanan "fonksiyonel" veri kullanımınız varsa, SQL'de kalmanızı öneririm. Verilerinizi daha sonra aramak veya raporlama yapmak için saklarsanız ve bu miktarda veri hızla artabilirse, büyük veriler öneririm. Kanımca, büyük veri sürekli olarak toplanması ve analiz edilmesi gereken gerçek verilerle uğraşırken kullanışlıdır.


8

Ilişkili vs belge (veya NoSQL) veritabanı kullanmanın uygun olduğu zaman hakkında stackoverflow oldukça ayrıntılı bir cevap yayınladı, burada:

İlişkisel veritabanı / ORM veya belge veritabanı / ODM kullanma motivasyonları

Özet:

  • küçük şeyler için, aşina olduğunuz araçlara gidin

  • birkaç gigabayt kesinlikle küçük şeylerdir: makul sayıda düğüme (16-32) sahip tek bir MySQL Kümesine sığmayacak kadar büyük olana kadar büyük olmaz , bu da belki 8-16 TB veri ve birkaç milyon işlem anlamına gelir saniyede (veya 100'e kadar TB verisi ve saniyede birkaç bin işlem içeren daha geleneksel bir sabit disk tabanlı veritabanı).

  • başka bir veritabanına (MySQL Kümesi değil) takılı kalırsanız, FusionIO donanımını atarak daha fazla kilometre ömrü elde edin.

  • birkaç TB'tan daha büyük ve saniyede binlerce işlemden daha hızlı verilere sahip olduğunuzda, önce uygulama kodunda mantıksal parçalamaya ve sonra NoSQL'e geçmeye bakmak için iyi bir zamandır.

  • Cassandra :)


6

NoSQL'e geçmenin zamanı 2 şeye bağlı olacak mı:

  1. Verilerinizin yapısı / yapısı
  2. Mevcut performansınız

SQL veritabanları, veriler iyi yapılandırıldığında ortaya çıkar (örn. Tablo, Excel elektronik tablosu veya sabit sayıda sütun içeren bir dizi satır olarak modellenebildiğinde). Ayrıca (ki sizin gibi geliyor) bir çok tablo birleştirmeleri yapmak gerektiğinde iyi.

NoSQL veritabanları, veriler anahtar / değer çiftlerinin ötesinde yapılandırılmamışsa mükemmeldir.

Performans açısından, kendinize bir soru sormalısınız: Mevcut SQL çözümünüz yavaş mı?

Değilse, " IIABDFI " prensibi ile gidin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.