Bir haftadır NoSQL Veritabanlarını öğreniyorum.
NoSQL Veritabanlarının avantajlarını ve çok kullandıkları kullanım durumlarını gerçekten anlıyorum.
Ancak çoğu zaman insanlar makalelerini NoSQL İlişkisel Veritabanlarının yerini alabilecekmiş gibi yazarlar . Ve kafamı bulamadığım nokta var:
NoSQL Veritabanları (genellikle) anahtar-değer depolarıdır.
Tabii ki mümkündür depolamak (JSON, XML, ne olursa olsun veriyi şifreleyerek) bir anahtar-değer deposuna şeyi, ama tek gördüğüm sorun gerektiğidir olsun birçok belirli bir kritere uyum bazı verilerin miktarını davaları kullan. NoSQL veritabanında etkin bir şekilde arayabileceğiniz tek bir kriter var - anahtar. İlişkisel Veritabanları, veri satırındaki herhangi bir değeri etkin bir şekilde aramak için optimize edilmiştir.
Bu yüzden NoSQL Veritabanları, içerikleri tarafından aranması gereken kalıcı veriler için gerçekten bir seçenek değildir. Yoksa bir şeyi yanlış mı anladım?
Bir örnek:
Bir web mağazası için kullanıcı verilerini saklamanız gerekir.
İlişkisel bir veritabanında her kullanıcıyı users
tabloda bir satır olarak, bir kimliği, adı, ülkesi vb. İle birlikte saklarsınız.
Bir NoSQL Veritabanında, her bir kullanıcıyı anahtarı olarak kimliğini ve tüm verilerini (JSON'da kodlanmış vb.) Değer olarak saklarsınız.
Bu nedenle, tüm kullanıcıları belirli bir ülkeden almanız gerekiyorsa (bazı nedenlerden dolayı pazarlamacıların onlar hakkında bir şeyler bilmesi gerekir), İlişkisel Veritabanında bunu yapmak kolaydır, ancak NoSQL Veritabanında çok etkili değildir, çünkü olsun her kullanıcıyı ayrıştırmak tüm veri ve filtre.
Ben öyle demiyorum imkansız , ama çok daha zor alır ve sana NoSQL girişlerinin verilerinde aramak istiyorsanız o kadar etkili değildir sanırım.
Bu ülkede yaşayan her kullanıcının anahtarını depolayan her ülke için bir anahtar oluşturabilir ve bu ülke için anahtarda bırakılan tüm anahtarları alarak belirli bir ülkenin kullanıcılarını alabilirsiniz. Ancak bu tekniğin karmaşık bir veri kümesini daha da karmaşık hale getirdiğini düşünüyorum - bir SQL Veritabanını sorgulamak kadar etkili değil, uygulanması daha zordur. Bu yüzden üretimde kullanmanın bir yolu olmadığını düşünüyorum. Yoksa öyle mi?
Bir şeyi yanlış anladığımdan ya da bu gibi kullanım durumlarını ele almak için bazı kavramları ya da en iyi uygulamaları göz ardı ettiğimden emin değilim. Belki ifadelerimi düzeltip sorularıma cevap verebilirsin.