Cassandra Kompleksi Sorgu

5 Cevap php

I have heard on cassandra database engine few days ago and searching for a good documentation on it. after studying on cassandra I got cassandra is more scalable than other data engine. I also read on Amazon SimpleDB but as SimpleDB has a limitation 10GB/table and Google Datastore is slower than Amazon SimpleDB, I prefer not to use them (Google Datastore, Amazon SimpleDB). So for making our site scaled specially high write rates with massive data, I like to use Cassandra as our Data Engine.

Ama cassandra kullanmadan başlamadan önce ben "casssandra kullanarak karmaşık veri işlemek için nasıl" üzerine karıştı. Sana aşağıda MySQL veritabanı yapısını veriyorum, bu okuma ve bana iyi bir öneri verin.

Users Table
hasColum ID Primary
hasColum email Unique
hasColum FirstName
hasColum LastName

Category Table
hasColum ID Primary
hasColum Parent
hasColum Category

Posts Table
hasColum ID Primary
hasColum UID Index foreign key linked to users->ID
hasColum CID Index foreign key linked to Category->ID
hasColum Title
hasColum Post Index
hasColum PunDate

Comments
hasColum ID primary
hasColum UID Index foreign key linked to users->ID
hasColum PID Index foreign key linked to Posts->ID
hasColum Comment

User Group
hasColum ID primary
hasColum Name

UserToGroup Table (for many to many relation only)
hasColum UID foreign key linked to Users->ID
hasColum GID foreign key linked to Group->ID

Finally for your information, I like to use SimpleCassie PHP Class http://code.google.com/p/simpletools-php/ So, it will be very helpful if you can give me example using SimpleCassie

5 Cevap

Ben ağır bir yük ve sistemi yoluyla gelen verilerin çok olurdu ki üstlenecek, ve yine ben bir ilişkisel veritabanı denenmiş ve ağır yük altında ezilmiş, satır milyonlarca hit, ikinci vb başına 10k + isteği olduğunu varsayar

Bu varsayımlar sonra ben size düşünüyorum biçimini değiştirmek gerektiğini söylerdim. Örneğin Sorunuzu size ilişkisel veritabanları düşünüyorsun gerçekten önemli tablo yapısını yazdı. Ama sütun mağazalarında (cassandra / Hbase / vb gibi) sayar onun bu önemli değil, kendi istekleri türlerini. Sütun mağazalarında her zaman yeni bir sütun (size isteklerin ama tepkiler kullanmak olmaz ekstra bir sütun) bir yeni meta veri atabilir beri, sizin tasarımını değiştirmek zorunda değilsiniz. Ancak ilişkisel veritabanlarında Eğer tabloyu değiştirmek hatta pk-fk ilişkisi ile başka bir tablo almak gerekir.

Cassandra (veya herhangi bir diğer sütun veritabanı) kullanırken önünüzde sizin tüm API olmalıdır.

Örnek:

Eğer api getAllUserPosts($userId) varsa eighter olmalıdır: UserPosts ColumnFamily ya da (arka planda benzer bir şey yapar) Mesajlar ColumnFamily bir ikincil dizin. Daha uzağa daha nasıl sonuç kriteri gerekiyor? Eğer sıralama oluşturma tarihine göre olmak istiyorsanız evet onun tasarımı lutfen önemli bir nokta, o zaman daha iyi tuşu, ya da sizin için artan bir uid oluşturmak için bir 3. parti Mekanizması içinde TimeUID kullanmak istiyorsunuz. Belki onların "son güncelleme" ile bunları sıralamak istiyorum, o zaman daha iyi bir ikincil dizin koymak istiyorsunuz.

Benim deneyim söylerdim onun gerçekten serin API, ya da ne verilerden ihtiyaç berrak olduğunda cassandra ile bir şeyler geliştirmek için ancak büyük bir özelliğini değiştirmek istediğinizde önünüzde bazı gerçekten büyük zorluklar olurdu, dikkat . Ayrıca cassandra hızlı hale underlaying "sonunda tutarlılık" anlamak emin olun. Eğer (en azından ben öyle yaptım) bir işlem çalışması için klavye üzerinde bir çok kez başını patlama olurdu çünkü. Ve tabii bir noktada cassandra üzerinde sahip büyük veri üzerinde bir kütle işlemi yapmak isterim: aka et cloud computing hazır olun. Hadoop.

PS: Ben pek çok insan o bana ben yapabileceğimden daha iyi sistem tasarımı yardımcı olacağını kim cassandra ile çok deneyim ve bilgi birikimi ile burada olduğuna inanıyorum. Ben sadece ne deneyimli paylaşmak istedim ve üretimde cassandra kullanırken anladım.

Denormalize. http://github.com/ericflo/twissandra de twissandra.com ve belgelerine bakın

http://wiki.apache.org/cassandra/ArticlesAndPresentations daha fazla örnek

Kimden cassandra's wiki data model reference:

Eğer varlıkları ve ilişkilerini modellemek ve sonra sadece Cassandra ile, sorgular gerekli hale olursa olsun desteklemek için dizinler eklemek ilişkisel sistemleri, aksine size uygun vaktinden verimli desteklemek istiyorum, ve model sorgular ne düşünmek gerekir. Hiçbir otomatik olarak sağlanan dizin vardır beri, size tablolarla olurdu daha sorgusu başına bir ColumnFamily çok daha yakın olacaktır: sorguları ilişkisel. Buna göre denormalize korkmayın;

A goog makale here.

Ben size yardımcı olur umarım.

Burada veri erişim gereksinimlerine göre şema tasarım tartışmaktadır Twissandra (Cassandra Twitter klonu) hakkında iyi bir makale. Bunu yararlı http://www.rackspacecloud.com/blog/2010/05/12/cassandra-by-example/ bulabilirsiniz

Eğer gerçekten trafik hacimleri açısından Google ve Amazon ile yarışıyor? Şu anda küme (ler) in kaç veritabanı sunucuları çalıştırmak - ben senin şu anki MySQL altyapısını yükseltme bakarak başlayan tavsiye ederim? Eğer veri bölümlemek musunuz?

C.