2011-05-22 12 views
6

Kullanıcı, çalma listesi, videolar, etiketler gibi tabloları içeren bir mysql veritabanı var.Takip Etme Kullanıcı etkinlik kaydı - SQL vs NoSQL?

Buna dayanarak, bu kullanıcının uygulama etkinliğini uygulamada toplamak istiyorum. örnek kullanım durumları olabilir:

a.) (user) joined (app) on (date) 
b.) (user) created playlist (playlist) on (date) 
c.) (user) added (video(s)) to playlist (playlist) 
d.) (user) added tags (tag(s)) to video in playlist (playlist) 

Verilen bu veriler, bir kullanıcı etkinliği şema tasarımı daha iyi bir alternatif olacağını? relational(I am using MySQL) or NoSQL(non-relational, like MongoDB)

tercih eden NoSQL
a.) Başka bir şey çok fazla olacak yaktı aktivite beri, veri alınırken hızlı olmalı edilir, ben Belge Odaklı veritabanı tabloları arasındaki birleşme hiçbir
tabi beri böyle senaryolarda iyi performans okumak b.) Etkinlik günlüğü, aktiviteye bağlı olarak bir, çok sayıda değişken içermediğinden, ilişkisel bir şema iyi bir çözüm olmayabilir.

Ben :)
o karar, finansal işlemler olsa da olmasa da dayanıyor gibi geliyor bana, uzun süredir İlişkisel kullanıcı olarak size

cevap

4

Herhangi bir ilişkisel veritabanında doğru, asıl sorun sizsiniz. ,

id 
activity_type - int 
user_id 
date 
field1 
field2 
filed3 

nerede activity_type (Kayıt = 1, CreatedPlaylist = 2:

Yani yapı böyle olacak:

Yani, sadece katılır önlemek, MongoDB veya mysql takip sistemini oluşturabilir ...)

Kullanıcı tablosuyla birleştirmekten kaçınmak için, her etkinlik satırına kullanıcı ile ilgili bazı verileri (göstermeniz gereken ilk_adı, son_adı gibi verileri) eklemelisiniz.

Yukarıda verilen çözüm ile mysql ile kalabilir ve hız aynıdır. Dokümanlara birçok şey gömdüğünüzde, ilişkisel veritabanında birleştirmeniz gereken Mongodb daha hızlı olacaktır.

+0

Yaklaşımı seviyorum Andrew, bu yaklaşımı uygulamamda kullanmaya çalışacağım – daydreamer

+0

@daydreamer: Denediniz mi? ;) –

+0

Hey Andrew, hazır tasarımım var, ama Play Framework'te mongo eklentisi ile çalışmayı zor buluyorum, yaptığım şeyle ilgileniyorsanız, e-postanızı bana bildirin, bende ne varsa onu göndereceğim aklımda, bu harika olurdu çünkü ben fikrimi dezenfekte etmek için göz çiftleri alacağım :) – daydreamer

1

ederiz bilgi paylaşmak lütfen, bu konuda daha fazla bilgi edinmek istiyorum ya fiziksel malların takibi. “Para ve şeyler”, İlişkisel'in icat ettiği şeydir. Bu son derece iyidir ve çok yüksek bir doğruluk standardını korur. Bununla birlikte, kitapları dengelemek zorunda olmadığınız ya da yanlışlıkla sahip olduğunuzdan daha fazla gereç satmadığınızdan emin olduğunuzda, o zaman ne yaptığınızı kullanın. Mongo, Kanka, her neyse.