我有一个谷歌应用引擎应用程序,可以将时间序列数据实时加载到谷歌数据存储区nosql样式表中。我希望得到一些关于正确类型的架构的反馈,以将这些数据提取到Web应用程序样式图表中(理想情况下我还可以将其插入到Word Press等内容管理系统中)。
我的大部分服务器端代码都是python。什么是合理的客户端 - 服务器设置从数据存储数据库中提取数据并显示到我的网页中?理想情况下,我有一些可扩展的东西,并且不会在我的数据库上造成不必要的读取次数(可能使用google-app-engine的内置缓存/等)。
我猜这是一个常见的用例,但我想知道围绕这个可能是什么样的最佳做法。我已经看到一些使用客户端Web端javascript / ajax与服务器端php来读取数据库的例子 - 这真的是最好的方法吗?
答案 0 :(得分:0)
欢迎来到"这取决于"。
你有一些选择。想象一下经典的四象限图。沿着一个轴是数据大小,另一个是陈旧/新鲜度。
如果您的时间序列数据变化很快但足够小以便在请求中安全地检索,您可以按需查询,将其转换为JSON,并将其喷射到浏览器以由JavaScript图表包呈现你的选择。如果数据很大,您的应用程序将需要进行某种服务器端预处理,以便在需要数据时,可以在请求不会超时的请求中检索到足够少的请求。这可能涉及一些数据依赖,如预先划分时间序列。
如果数据变化缓慢,您可以选择在服务器端生成图表,也许使用matplotlib
。摄取新数据时,或者可能每隔一段时间,产生一个任务,以生成并将图表(或JSON交给前端)作为数据存储区中的blob进行缓存。如果数据足够大,任务将超时,则可能需要使用后端进程。如果数据足够大并且您没有进行预处理,那么您就处于不幸福的象限中。
根据我的经验,GAE内存缓存最适合在请求之间的时间非常短的请求之间缓存数据。不要依赖于生成工件,将它们填充到memcache中,并希望它们在几分钟后就能存在。我很少见到那种工作。