问题标签 [bigtable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1572 浏览

python - 在 App Engine 上执行大量 db.delete,而不占用 CPU

我们在 Google App Engine 上有一个大小合理的数据库——刚刚超过 50,000 个实体——我们希望从中清除陈旧的数据。计划是编写一个延迟任务来迭代我们不再需要的实体,并批量删除它们。

一个复杂的问题是我们的实体也有我们想要清除的子实体——没问题,我们认为;我们只需查询这些实体的数据存储,并与父级同时删除它们:

我们限制自己ParentKind一次删除 100 个实体;每个ParentKind都有大约 40 个子实体ChildKindAChildKindB实体 - 可能是 4000 个实体。

这在当时似乎是合理的,但我们运行了一批作为测试,结果查询需要 9 秒才能运行——并且在可计费的 CPU 时间上花费了 1933秒来访问数据存储。

这看起来相当苛刻——每个实体 0.5 秒计费!- 但我们并不完全确定我们做错了什么。仅仅是批次的大小吗?祖先查询特别慢吗?或者,删除(实际上是所有数据存储访问)是否像糖蜜一样慢?

更新

我们将查询更改为keys_only,虽然这将运行一批的时间减少到了 4.5 秒,但它仍然花费了大约 1900 秒的 CPU 时间。

接下来,我们将 Appstats 安装到我们的应用程序中(谢谢,kevpie)并运行一个较小的批次——10 个父实体,总计约 450 个实体。这是更新的代码:

Appstats 的结果:

Delete通话是手术中最昂贵的部分!

有没有解决的办法?Nick Johnson 提到,使用批量删除处理程序是目前最快的删除方式,但理想情况下,我们不想删除一种类型的所有bar = foo实体,只删除与我们初始查询匹配且是其子级的实体。

0 投票
2 回答
546 浏览

google-app-engine - Google App Engine 数据存储区中每秒写入 5 次以上的事务计数器

我正在开发一款游戏的锦标赛版本,我希望同时有 1000 多名玩家参与其中。比赛开始时,玩家会很快被淘汰(可能每秒超过 5 个),但随着比赛的进行,这个过程会减慢。根据玩家在比赛中被淘汰的时间,会获得一定数量的积分。例如,第一个掉线的玩家一无所获,而第 500 位的玩家获得 1 分,而第一名的玩家获得 200 分。现在我想在玩家被淘汰后立即奖励并显示积分数量。

问题是,当我在玩家被淘汰后将新行推入数据存储时,行实体必须位于单独的实体组中,因此我不会达到 1 个实体每秒 1-5 次写入的 gae 数据存储限制团体。此外,我需要能够一致地读取和写入行数,以便我可以正确确定所有被淘汰的玩家的奖品。

实现数据模型以支持这一点的最佳方法是什么?

0 投票
1 回答
738 浏览

google-app-engine - web2py 类似于 google 应用引擎的等价物

有没有办法使用应用引擎 BigTable 数据库 生成类似于like, contains,运算符的查询?startswith

这样我就可以做类似的事情:

使用 web2py 中的应用程序引擎。

0 投票
3 回答
200 浏览

mysql - mysql 存储例程与 mysql-alternative?

我们正在使用一个总共有大约 150,000 条记录(名称)的 mysql 数据库。我们对“名称”字段的搜索是通过 php.ini 中的自动完成功能完成的。我们已经为表格编制了索引,但仍然觉得搜索有点迟缓(整整几秒钟,而谷歌财经之类的东西几乎可以立即响应)。我们提出了两种可能性,但希望获得更多见解:

  1. 我们是否可以创建一堆(数千或更多)存储过程来加快搜索速度,或者创建那么多存储过程会使数据库陷入困境?

  2. 对于“选择”语句,是否有比 mysql 更快的替代方法(插入和更新行的速度并不是很重要,所以我们可以在必要时牺牲它)。我隐约听说过 BigTable 和其他不支持 JOIN 语句的语句……我们需要 JOIN 语句来处理我们所做的其他一些查询。

谢谢

0 投票
1 回答
75 浏览

caching - 使用 IN 运算符进行 BigTable 查询以获取所有用户组键

在我未来的社交应用程序中,我对权限没有什么问题。

平台将 nonrel db(Google 的 BigTable)。

在我的应用程序中,每个用户都有组(例如:朋友、合作者、家人......)。在小组中有一些朋友(比如在 Facebook 中)。并且可以只为这个组发布一些内容(新闻,短文,...)。如果我的组中有用户,那是我的朋友。就像在 Facebook 中一样,但有更多的群组。

我的想法是,每个用户都可以在一个页面中看到(在自己的“供稿”上)所有朋友的所有最后内容(如 Facebook 的热门新闻)。但是我在创建简单查询时遇到了问题。

例如:

这很好用,但是有子查询并且列表的限制是 30 项。另一种方式是内容的强缓存。

有人有什么想法吗?或任何学习材料,例如...

0 投票
1 回答
387 浏览

cassandra - SSTables 或 Hfile 是否合并到 1TB 以上?

在major compaction中,将区域服务器(Hbase)中的所有sstables和所有SSTables形成tablet server(Cassandra)合并成一个大的。

如果周期来了,是否将平均 SSTables(总空间超过 1TB)合并为一个?可能有一些 SSTable 或 HFile 的范围界限将其分成几个部分 - 以确保合并操作不会“重写所有服务器”?

我的问题与此链接http://wiki.apache.org/cassandra/MemtableSSTable的“压缩”部分有关

0 投票
1 回答
976 浏览

python - Google App Engine 上的 ListProperty 与 StringListProperty

我想存储整数列表(用户ID),我应该将它们设为字符串并使用StringListProperty,还是只使用ListProperty,我想知道什么更优化,异构ListProperty的特定StringListProperty(仅与整数一起使用时) )。

我需要将用户添加到列表中,直到达到一定数量,然后为这些用户创建一个组实例(在单独的实体组中)。

0 投票
1 回答
420 浏览

google-app-engine - Google App Engine 和数据库“视图”

我正在为具有相当复杂的数据模型的 GAE 开发应用程序。

根据我的理解,使用 noSQL 数据库(尤其是 GAE)处理复杂数据模型的一个好方法是使用非规范化的数据“视图”。如果浏览器客户端想要更新一些数据,服务器对一些核心数据执行写入,返回“200 OK”以便客户端可以继续,然后使用任务队列更新写入数据可能影响的任何“视图” .

然后,每当客户端想要查询通常需要 SQL 连接的某些对象时,它可以改为查询“视图”,其中它需要的所有数据都在同一“行”(或实体,在应用引擎的情况下)中)。

我遇到的问题是,所有这些视图的创建和更新似乎都是图书馆应该做的事情,而不是我应该手动做的事情。是否有与 GAE 一起使用的工具,您可以在其中指定数据的某些视图,然后期望它们将被适当地创建和处理?我相信CouchDB会这样做......

0 投票
1 回答
258 浏览

google-app-engine - 在非关系型 DBMS(AppEngine 中的 BigTable)中,我应该如何为群发消息类型的系统设置实体?

想象一下,例如,我有很多用户。每次用户发送消息时,他/她都可以向其他用户列表发送消息(类似于群发电子邮件)。但是,我只想存储一次消息以节省存储空间。因此,当其中一位消息接收者打开他的邮箱时,他/她必须在那里查询该消息。在设置消息系统的实体(表)方面,什么更有效?请注意:在非 RDBMS 中,不允许连接查询。那么这是一个合理的设置,我怎样才能使它更有效(1):

或者我应该采用以下策略(2):

哪种策略似乎更有效?即遍历arraylist 比简单地遍历DBMS 慢吗?

任何意见将不胜感激。

*注意:消息可以任意长,因此我不想存储同一消息的多个副本。

谢谢你。

0 投票
3 回答
6049 浏览

download - 如何将 MySQL 之类的大表下载到我的电脑中?

如何将 MySQL 之类的大表下载到我的电脑中?