bir tablo farklı PartionKeys almanın bir yolu var mı. Bu verilere göz atmamı sağlayan bir görüntüleyici oluşturmak isterdim, ancak verileri "cihaza göre" veya PartitionKey tarafından görüntüleyebilmek için yapılandırabilmek güzel olurdu. Görüntüleyici uygulaması, hangi cihazların var olduğuna dair herhangi bir bilgiye sahip olmayacaktır. Bu nedenle, belirli bir Tablodaki belirli PartionKey'lerin bir listesini geri alabilsem harika olurdu. Bu mümkün mü, yoksa her aygıt için yeni bir satır eklediğim meta-veri tablosu oluşturmaya gidiyorum, sonra bunu sorgulama için kullanacağım mı?Şu anda Azure Tablo Hizmetleri içine veri depolamak aygıtları ayırt etmek PartitionKey kullanıyorum
Şu anda Azure Tablo Hizmetleri içine veri depolamak aygıtları ayırt etmek PartitionKey kullanıyorum
cevap
Bütün bölüm anahtarlarını almak için bir yolu yoktur sanmıyorum. Burada olsa, akıllı çözüm var: http://blogs.msdn.com/b/avkashchauhan/archive/2011/10/23/retrieving-partition-key-range-in-windows-azure-table-storage.aspx
Avkash blog gelen alıntı:
ayrıca kazma, bölüm tuşlarının bir listesini almak için API yerleşik hiçbir edilir orada bulunan, bunun yerine oluşturmak zorunda kalacak kendim için bir çözüm. Yani her bölüm içine tek kukla satır ekleme sona ve ben sadece bu kukla öğeler için sorgulamak bölüm tuşlarının bir listesini almak istediğini ve bana aradığım listesini verdi.
Ben zaten bunu görmüş, ancak bu soru üzerine meydana gelebilecek başka olacak eminim, ben bu tabloda hizmet fonksiyonlar için en rehber olduğunu düşünüyorum: detaylı API dokümanlara örnekler ve bağlantılar ile http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/.
Üzülerek Azure Tablolar ayrı veya diğerleri gibi işlevleri yoktur - bu bellekte bir Dictionary gibi yapılandırılmış bir anahtar tabanlı depolama düşünün. Gerçekleştirdiğiniz herhangi bir işlem, hangi alt anahtarları yüklemek istediğinizi bilmedikçe ve alt listeyi işlemek için, bunların alt kümesini almak için tüm öğeler arasında yineleme yapmak zorunda kalacaktır.
Şahsen, sadece basit bir masmavi masayı kullanabilir ve orada bölüm tuşlarını (satır tuşları olarak) saklayabilirim ki bu da bunları başka bir faktörle gruplamak için bir fırsat verir. Ya da sadece bu ikinci tablo için tek bir bölüm anahtarı kullanın.
Bu size en iyi performansı ve baş ağrısı en az miktarda verecekti.
Bazen en basit yaklaşım sadece işi gibi iyi biridir. Bu yardımcı olur
Umut,
sizin bölümleri depolamak için tek bir tablo oluşturun. Tabloyu, kullandığınız tablo adlarına göre bölümlere ayırın ve oluşturduğunuz her bölüm için bir giriş ekleyin.
public class PartitionEntry : TableServiceEntity { }
tableServiceContext.AddObject("TablePartitions", new PartitionEntry
{
PartitionKey = "<table name>",
RowKey = "<partition key>",
});
tableServiceContext.BeginSaveChanges(SaveChangesOptions.ContinueOnError, null, null);
sonra sadece bölümleri listesini almak için bu tabloyu sorgulamak. Bu benim için çok yönetilebilir.
var tbl = tableServiceContext.CreateQuery<PartitionEntry>("TablePartitions");
return tbl.Where(i => i.PartitionKey == "<table name>")
.Select(i => new { PartitionKey = i.RowKey, });
bu optimize edilebilecek bahis. o paralel olarak çalıştığı becauwse
ConcurrentDictionary<string, byte> partitionKeys = new ConcurrentDictionary<string, byte>();
Parallel.ForEach(myTable.ExecuteQuery(new TableQuery()), entity =>
{
partitionKeys.TryAdd(entity.PartitionKey, 0);
});
Büyük bir tablo olsa bile, hızla doldurmak gerekir:
Bu size tablodaki tüm bölüm tuşlarının bir listesini alacak. Eğer yapacaksanız, "ConcurrentSet" yoktur, bu yüzden ConcurrentDictionary kullanmak zorundayız. Bayt sadece bir yer tutucudur; tüm değerler partitionKeys.Keys.I ile daha önce benzer bir yaklaşım güvenilir
(70 milyon satır tablo aday - yaklaşık 2 saat) üst yanı sizin büyük çok yavaş çalışır şekilde
TableQuery queryRows = new TableQuery() { SelectColumns = new List<string> { "PartitionKey" } };
...
var tableClientSrc = storageAcctScr.CreateCloudTableClient();
var tablesSrc = tableClientSrc.ListTables();
var tableSrc = tablesSrc.FirstOrDefault(o => o.Name.Equals(nameSrc));
int cntSrc = tableSrc.ExecuteQuery(queryRows).Count();
...
ya da ortam ancak birçok özellikleri, tablo ile
- 1. Yani, Şu anda AWS lambda kullanıyorum JSON
- 2. Partitionkey ve rowkey olmadan azure tablosunu sorgulama
- 3. TableQuery PartitionKey
- 4. Do Azure tablo hizmetleri kişiler NonSerializedAttribute bir eşdeğeri var mı?
- 5. Nasıl Şu anda
- 6. Azure Tablo Depolama Tablosunu Zorunlu Olarak Sönme
- 7. Python hata pygame Şu anda python 2.7 kullanıyorum
- 8. Kontrol birkaç PHP dizi anahtarları tüm Şu anda aşağıdaki kullanıyorum
- 9. WCF/WCF Veri Hizmetleri/WCF RIA Hizmetleri
- 10. Çoklu filtre koşulları Azure tablo depolama
- 11. ggplot2: Şu anda efsane
- 12. Şu anda "Get_Item" MethodInfo
- 13. Bu üç olgu ayırt etmek istediğiniz argüman
- 14. C++: türlerini ayırt etmek için type_info
- 15. pandalar içine püskürtülen tablo DataFrame
- 16. /Benim Özet Veri Türü Şu anda bu sorun Referans
- 17. Şu anda Çerçeve Projesi önerilen yapıyı
- 18. Eklentiler Veri depolamak için nasıl veri
- 19. Kuru çalışma yöntemi? Şu anda
- 20. UIToolbar öğeler şu anda gösterilmiyor
- 21. Şu anda sınır yarıçapı için
- 22. Şu anda normal tarayıcı davranışını
- 23. Şu anda 2 şubesi var
- 24. MongoLab Azure Tablo Depolama vs
- 25. Performans Azure Blob ve Azure Tablo
- 26. Azure Sanal Makineler ve Bulut Hizmetleri
- 27. Veritabanında sql veritabanında veri depolamak nasıl saklanır
- 28. Bunu kullanıyorum anda seçme kutusunda
- 29. Şu anda AdapterView'da görüntülenen öğeler nasıl alınır?
- 30. WCF Veri Hizmetleri: __metadata üyelerinden nasıl korunulur?
Bu yaklaşım tam tablo taramasına neden olmaz mı? Daha iyi bir yaklaşım, her bir Bölüm (cihaz) için ayrı bir tablo oluşturmak ya da sadece her cihazla ilgili bilgileri içeren bir tablo oluşturmak (ana detay yaklaşımı gibi) olacaktır. –
@GauravMantri - Evet, bence bir tablo taramasıyla sonuçlanabilir. Sanırım, ek bir tablo oluştururken ve yönetirken veya tarama işlemini yaparken daha fazla verim elde etmenin - kullanım durumunuza ve veri hacmine bağlı olarak - daha az masraf isteyip istemediğinizi düşünelim. Ancak ayrı bir tabloya ihtiyacınız yok - diğer bölümlere ait anahtarlardan başka hiçbir şey olmayan bir dizin bölümü de. – JcFx
Tüm bölümleri (bugün) döndürmenin bir yolu yoktur. Bilmek için tüm tabloyu taramanız gerekir. Hangi bölüm anahtarının olacağını hesaplayan meta veri veya ortak algoritma kullanın. – dunnry