我正在运行一个多租户GAE应用程序,每个租户可以拥有几千到几万个文件 此刻我试图制作一个MVC javascript客户端应用程序(我的应用程序的管理部分与spine.js),我需要CRUD端点和一次获取大量序列化对象的能力。对于这个特定的工作,appengine是缓慢的方式。我试图在blobstore中存储序列化对象,但是在读取/写入和更新内容到blobstore之间它需要花费太多时间并且应用程序变得非常慢。
我想在外部机器上使用nosql db来对appengine进行这些操作。 一些选项可能是mongodb,couchdb或redis。但我不确定他们对来自不同租户的大量数据和并发请求/插入的表现有多好。
假设我有20个租户,每个租户都有5万个文档。这些dbs能够处理这种负载吗?
这是正确的方法吗?
答案 0 :(得分:2)
为什么不使用速度更快的常规appengine数据存储区而不是blobstore?只需将文档作为Blob属性存储在常规实体中。只需确保实体大小不超过1 MB,在这种情况下,您必须将数据拆分为多个实体。我用这种方式运行了数百万个大Blob的应用程序。 为了进一步加快速度,使用memcache甚至内存缓存。考虑以最快的一致性获取您的entites。使用批量操作或异步API尽可能并行地运行多个数据库操作。
答案 1 :(得分:0)
从appengine调用这些外部机器的开销将比你现在看到的性能更差(我预期)。为什么不把所有东西都搬到非发动机上?
我不能说沙发,但mongo或redis肯定能够处理严重的负载,只要它们设置正确并且有足够的马力满足您的需求。