1

我正在运行一个多租户 GAE 应用程序,其中每个租户可能拥有 1000 到 100k 个文档。
目前我正在尝试制作一个 MVC javascript 客户端应用程序(我的应用程序的管理部分带有 spin.js),我需要 CRUD 端点和一次获取大量序列化对象的能力。对于这个特定的工作,appengine 的速度很慢。我试图将序列化的对象存储在 blobstore 中,但是在读取/写入和将内容更新到 blobstore 之间需要太多时间,并且应用程序变得非常慢。

我想在外部机器上使用 nosql db 来通过 appengine 执行这些操作。一些选项是 mongodb、couchdb 或 redis。但我不确定它们在处理这么多数据和来自不同租户的并发请求/插入时表现如何。

假设我有 20 个租户,每个租户有 50k 文档。这些数据库能够处理这种负载吗?

这甚至是正确的方法吗?

4

2 回答 2

2

为什么不使用速度更快的常规 appengine 数据存储而不是 blobstore?只需将您的文档作为 Blob 属性存储在常规实体中。只需确保实体大小不超过 1 MB,在这种情况下,您必须将数据拆分为多个实体。我以这种方式运行一个包含数百万个大 Blob 的应用程序。为了进一步加快速度,使用 memcache 甚至内存缓存。考虑以更快的速度获取最终一致性的实体。使用批量操作或异步 API 尽可能多地并行运行数据库操作。

于 2012-07-04T06:14:30.953 回答
0

从 appengine 调用这些外部机器的开销将比您现在看到的性能更差(我预计)。为什么不把所有东西都移到非 appengine 的机器上呢?

我不能为沙发说话,但只要正确设置并有足够的马力满足您的需求,mongo 或 redis 绝对能够处理严重的负载。

于 2012-07-03T22:17:34.407 回答