我的任务是从Azure Table Storage下载大约1亿行数据.这里重要的是速度.
我们使用的过程是从Azure Table存储中下载10,000行.将它们处理为Sql Server的本地实例.处理行时,它会从Azure表中一次删除100行.这个过程是有线程的,有8个线程一次下载10,000行.
唯一的问题是根据我们的计算.下载和处理我们存储的大约1亿行需要大约40天.有谁知道更快的方法来完成这项任务?
一个附带问题:在下载过程中,Azure将发送回没有任何数据的xml.它不会发回错误.但它发送了这个:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="azure-url/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title type="text">CommandLogTable</title>
<id>azure-url/CommandLogTable</id>
<updated>2010-07-12T19:50:55Z</updated>
<link rel="self" title="CommandLogTable" href="CommandLogTable" />
</feed>
0
Run Code Online (Sandbox Code Playgroud)
有没有其他人有这个问题,并有一个解决方案吗?
在将相应的连接字符串添加到ServiceConfiguration.cscfg和以下代码之后,我有一个工作者角色,我想获得诊断反馈...
//DiagnosticMonitor.Start("DiagnosticsConnectionString");
DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagConfig.WindowsEventLog.DataSources.Add("Application!*");
diagConfig.WindowsEventLog.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(5.0);
diagConfig.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(5.0);
Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.Start("DiagnosticsConnectionString", diagConfig);
CrashDumps.EnableCollection(true);
Run Code Online (Sandbox Code Playgroud)
当我调用"System.Diagnostics.Trace.TraceInformation("测试日志")时,我希望能够在目标Azure存储帐户的WADLogsTable中找到记录.但是,该表不存在 - 它是如何创建的?我读过的所有文档都没有涵盖这一点.
提前感谢,
我怀疑是这样,因为抽象类TableServiceEntity具有以下内容:
public virtual string PartitionKey { get; set; }
public virtual string RowKey { get; set; }
Run Code Online (Sandbox Code Playgroud)
如果我想要一个DateTime或Double的RowKey怎么办?
我目前正在开发一个Azure项目,该项目在本地100%使用模拟器资源.我现在正在尝试部署一个辅助角色,但我遇到了一个我不确定如何排除故障的问题.
在Azure门户中部署辅助角色后,这两个实例不断循环"循环".
我可以尝试RDP进入这个角色,但是在连接关闭之前我只有大约一分钟的时间环顾四周,我假设由于回收.
经过一番搜索,似乎这不是一个超常见的问题.是否有一些微不足道的东西我可以忽视这可能导致这个问题?您将如何解决此问题?感谢您的时间 :)
azure azure-storage azure-storage-blobs azure-worker-roles azure-table-storage
我一直试图很好地掌握Azure Table存储一段时间,虽然我一般都了解它是如何工作的但我真的很难动摇我的关系数据库思维.我通常以身作则最好的学习,所以我想知道是否有人可以帮助我.我将概述一个关于如何使用关系数据库解决问题的简单设置,有人可以帮助指导我将其转换为使用Azure表存储吗?
假设我有简单的笔记记录应用程序,它有用户,每个用户可以拥有他们想要的尽可能多的笔记,并且每个笔记可以拥有所需数量的用户(所有者或查看者).如果我要使用关系数据库部署它,我可能会按如下方式部署它:
对于数据库,我会从这样的事情开始:
CREATE TABLE [dbo].[Users](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Username] [nvarchar](20) NOT NULL)
CREATE TABLE [dbo].[UsersNotes](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[NoteID] [int] NOT NULL)
CREATE TABLE [dbo].[Notes](
[ID] [int] IDENTITY(1,1) NOT NULL,
[NoteData] [nvarchar](max) NULL)
Run Code Online (Sandbox Code Playgroud)
我将随后的设置之间的关系Users.ID and UsersNotes.UserID,以及Notes.ID and UsersNotes.NoteID与约束来实施参照完整性.
对于应用程序,我会让一个ORM生成一些具有匹配的名称属性的实体,并且我可能会称它为一天:
public class Users
{
public int ID { get; set; }
public String Username { get; set; }
}
// and so on and so forth
Run Code Online (Sandbox Code Playgroud)
我意识到这个设计完全依赖于关系数据库,而我正在寻找的是如何动摇这一思路以使用Azure …
在WCFService WebRole中使用Windows Azure表存储时,尝试通过以下方式创建CloudStorageAccount:
storageAccount =
CloudStorageAccount.Parse(Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting("[Setting name]"))
Run Code Online (Sandbox Code Playgroud)
得到例外:
ConfigurationErrorsException"无法创建Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,Microsoft.WindowsAzure.Diagnostics,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35."
MSDN帮助说1)Visual Studio必须以管理员身份运行.2)角色必须在完全信任下运行(将.NET信任级别选项更改为完全信任).
全部完成,但我仍然有相同的例外.
执行批处理时,如果TableBatchOperation的其中一个操作失败:
我有一个使用Windows Azure存储客户端3.0工作的基本Azure表存储查询.将此转换为异步查询的最简单方法是什么?是否可以使用异步等待模式?
//Setup the storage account connection
var cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
var cloudTableClient = cloudStorageAccount.CreateCloudTableClient();
var table = cloudTableClient.GetTableReference("SampleTable");
//Get the context
var context = cloudTableClient.GetTableServiceContext();
//Setup the query
var q = from s in table.CreateQuery<SampleEntity>()
where s.PartitionKey == sampleUID.ToString()
select s;
//Get the list
var list = q.ToList();
Run Code Online (Sandbox Code Playgroud)
插入和更新实体有XyzAsync()方法......我必须遗漏一些东西.谢谢您的帮助.
我有大约3亿个文本文件,从50kb到100kb,我需要在网页上阅读和提供.
备注:
在Azure Table上,我需要拆分一些文本文件,以确保它不超过每列64kb的最大值.
在Azure Blob上,我不会遇到拆分问题,但需要在Azure SQL/Azure表上存储对它们的引用.
好的,介绍完成了!现在,在我的Azure Web App上:
.net azure azure-storage azure-table-storage azure-blob-storage
因为我们被迫放弃stateclient并转移到自定义存储,在我的情况下是一个azure表存储.使用我的storageexplorer,我可以看到它已经在我的azure上保存了对话数据.如何更新我的ff代码以获取过去的聊天记录?在我使用IActivityLogger类来记录对话之前,现在我对如何更新它感到困惑.
全球Asax之前:
protected void Application_Start()
{
var builder = new ContainerBuilder();
builder.RegisterType<Logger>().AsImplementedInterfaces().InstancePerDependency();
builder.Update(Conversation.Container);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
Run Code Online (Sandbox Code Playgroud)
全球Asax之后:
protected void Application_Start()
{
Conversation.UpdateContainer(builder =>
{
builder.RegisterModule(new AzureModule(Assembly.GetExecutingAssembly()));
var store = new TableBotDataStore(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
builder.Register(c => store)
.Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
.AsSelf()
.SingleInstance();
});
GlobalConfiguration.Configure(WebApiConfig.Register);
}
Run Code Online (Sandbox Code Playgroud)
记录器类:
public class Logger:IActivityLogger
{
public static ConcurrentDictionary<string, List<IActivity>> Messages = new ConcurrentDictionary<string, List<IActivity>>();
public Task LogAsync(IActivity activity)
{
try
{
var list = new List<IActivity>() { activity };
Messages.AddOrUpdate(activity.Conversation.Id, list, (k, v) => { v.Add(activity); return v; }); …Run Code Online (Sandbox Code Playgroud)