2017-09-07 48 views
0

我Apps服务使用Azure的SQL数据库大约15桌托管在Azure上: - assistances - 用户 - 事件日志时 等SQL服务器 - 实时和历史仪表读数形式表

目前我有15万左右记录,并在每日的基础上,我的数据库正在接收与新用户相关的约2000个新辅助。在我的应用程序中,我有一个cron,每隔1分钟就会对所有表进行大量操作(更新,插入等)。

现在我的目标是创造一些不错的仪表盘,这将显示管理员数据(如扶助之状态,扶助之数目的延迟等) - basicly从这些表中读取数据。它应该有可能按日期过滤(从 - 到日期) - 所以在最坏的情况下,很少有用户可以同时生成月份报告(约60k条记录)。我害怕直接在我的prod数据库上执行它,因为事实上,我已经cron正在进行很多操作,所以我担心锁定。

我的想法是: - SQL数据库仓库 - >最大的问题是它的成本。 - 复制到第二个数据库,它将用于查询仪表板的数据。 - 我不相信这个解决方案。 - 复制到noSQL数据库(仅推送重要信息)并将其用于仪表板源。 - 迄今为止我还没有这方面的经验。

你有没有建议什么是最好的?

+0

由于只有150K记录(即微小的),我第一次尝试,并运行对主数据库使用快照隔离的查询(以尽量减少锁定在写路径)。如果这不起作用,我会尝试复制到第二个数据库。没有正确的答案。 – mjwills

+0

使用其中一个命令行可执行文件将更有效地生成报告(https://docs.microsoft.com/zh-cn/sql/tools/command-prompt-utility-reference-database-engine)。您可以使用sqlcmd.exe以csv格式输出数据,然后将其导入到c#中。我有应用程序,我在C#中生成字符串查询,然后作为一个进程运行。这些命令行可执行文件旨在将数据库归档并运行比执行c#查询更有效。 – jdweng

回答

0

最后,我用从Azure中,这是使用快照隔离的地理复制选项,所以这是伟大的!即使MS Azure也建议使用此地理复制数据库作为用于只读操作的第二个数据库!我测试过,工作大:)

0

您可以使用Azure的自动化调度,而不是这样做,从应用那些每分钟运行一次任务。您可以详细了解Azure自动化here

而不是使用地理复制考虑使用SQL Azure数据同步。使您的主数据库成为“中心”数据库并使用副本进行报告。您可以了解有关SQL Data Sync here的更多信息。

您还可以使用Power BI来创建仪表盘作为解释here

希望这会有所帮助。