问题标签 [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.
python - 在 App Engine 上执行大量 db.delete,而不占用 CPU
我们在 Google App Engine 上有一个大小合理的数据库——刚刚超过 50,000 个实体——我们希望从中清除陈旧的数据。计划是编写一个延迟任务来迭代我们不再需要的实体,并批量删除它们。
一个复杂的问题是我们的实体也有我们想要清除的子实体——没问题,我们认为;我们只需查询这些实体的数据存储,并与父级同时删除它们:
我们限制自己ParentKind
一次删除 100 个实体;每个ParentKind
都有大约 40 个子实体ChildKindA
和ChildKindB
实体 - 可能是 4000 个实体。
这在当时似乎是合理的,但我们运行了一批作为测试,结果查询需要 9 秒才能运行——并且在可计费的 CPU 时间上花费了 1933秒来访问数据存储。
这看起来相当苛刻——每个实体 0.5 秒计费!- 但我们并不完全确定我们做错了什么。仅仅是批次的大小吗?祖先查询特别慢吗?或者,删除(实际上是所有数据存储访问)是否像糖蜜一样慢?
更新
我们将查询更改为keys_only
,虽然这将运行一批的时间减少到了 4.5 秒,但它仍然花费了大约 1900 秒的 CPU 时间。
接下来,我们将 Appstats 安装到我们的应用程序中(谢谢,kevpie)并运行一个较小的批次——10 个父实体,总计约 450 个实体。这是更新的代码:
Appstats 的结果:
Delete
通话是手术中最昂贵的部分!
有没有解决的办法?Nick Johnson 提到,使用批量删除处理程序是目前最快的删除方式,但理想情况下,我们不想删除一种类型的所有bar = foo
实体,只删除与我们初始查询匹配且是其子级的实体。
google-app-engine - Google App Engine 数据存储区中每秒写入 5 次以上的事务计数器
我正在开发一款游戏的锦标赛版本,我希望同时有 1000 多名玩家参与其中。比赛开始时,玩家会很快被淘汰(可能每秒超过 5 个),但随着比赛的进行,这个过程会减慢。根据玩家在比赛中被淘汰的时间,会获得一定数量的积分。例如,第一个掉线的玩家一无所获,而第 500 位的玩家获得 1 分,而第一名的玩家获得 200 分。现在我想在玩家被淘汰后立即奖励并显示积分数量。
问题是,当我在玩家被淘汰后将新行推入数据存储时,行实体必须位于单独的实体组中,因此我不会达到 1 个实体每秒 1-5 次写入的 gae 数据存储限制团体。此外,我需要能够一致地读取和写入行数,以便我可以正确确定所有被淘汰的玩家的奖品。
实现数据模型以支持这一点的最佳方法是什么?
google-app-engine - web2py 类似于 google 应用引擎的等价物
有没有办法使用应用引擎 BigTable 数据库 生成类似于like
, contains
,运算符的查询?startswith
这样我就可以做类似的事情:
使用 web2py 中的应用程序引擎。
mysql - mysql 存储例程与 mysql-alternative?
我们正在使用一个总共有大约 150,000 条记录(名称)的 mysql 数据库。我们对“名称”字段的搜索是通过 php.ini 中的自动完成功能完成的。我们已经为表格编制了索引,但仍然觉得搜索有点迟缓(整整几秒钟,而谷歌财经之类的东西几乎可以立即响应)。我们提出了两种可能性,但希望获得更多见解:
我们是否可以创建一堆(数千或更多)存储过程来加快搜索速度,或者创建那么多存储过程会使数据库陷入困境?
对于“选择”语句,是否有比 mysql 更快的替代方法(插入和更新行的速度并不是很重要,所以我们可以在必要时牺牲它)。我隐约听说过 BigTable 和其他不支持 JOIN 语句的语句……我们需要 JOIN 语句来处理我们所做的其他一些查询。
谢谢
caching - 使用 IN 运算符进行 BigTable 查询以获取所有用户组键
在我未来的社交应用程序中,我对权限没有什么问题。
平台将 nonrel db(Google 的 BigTable)。
在我的应用程序中,每个用户都有组(例如:朋友、合作者、家人......)。在小组中有一些朋友(比如在 Facebook 中)。并且可以只为这个组发布一些内容(新闻,短文,...)。如果我的组中有用户,那是我的朋友。就像在 Facebook 中一样,但有更多的群组。
我的想法是,每个用户都可以在一个页面中看到(在自己的“供稿”上)所有朋友的所有最后内容(如 Facebook 的热门新闻)。但是我在创建简单查询时遇到了问题。
例如:
这很好用,但是有子查询并且列表的限制是 30 项。另一种方式是内容的强缓存。
有人有什么想法吗?或任何学习材料,例如...
cassandra - SSTables 或 Hfile 是否合并到 1TB 以上?
在major compaction中,将区域服务器(Hbase)中的所有sstables和所有SSTables形成tablet server(Cassandra)合并成一个大的。
如果周期来了,是否将平均 SSTables(总空间超过 1TB)合并为一个?可能有一些 SSTable 或 HFile 的范围界限将其分成几个部分 - 以确保合并操作不会“重写所有服务器”?
我的问题与此链接http://wiki.apache.org/cassandra/MemtableSSTable的“压缩”部分有关
python - Google App Engine 上的 ListProperty 与 StringListProperty
我想存储整数列表(用户ID),我应该将它们设为字符串并使用StringListProperty,还是只使用ListProperty,我想知道什么更优化,异构ListProperty的特定StringListProperty(仅与整数一起使用时) )。
我需要将用户添加到列表中,直到达到一定数量,然后为这些用户创建一个组实例(在单独的实体组中)。
google-app-engine - Google App Engine 和数据库“视图”
我正在为具有相当复杂的数据模型的 GAE 开发应用程序。
根据我的理解,使用 noSQL 数据库(尤其是 GAE)处理复杂数据模型的一个好方法是使用非规范化的数据“视图”。如果浏览器客户端想要更新一些数据,服务器对一些核心数据执行写入,返回“200 OK”以便客户端可以继续,然后使用任务队列更新写入数据可能影响的任何“视图” .
然后,每当客户端想要查询通常需要 SQL 连接的某些对象时,它可以改为查询“视图”,其中它需要的所有数据都在同一“行”(或实体,在应用引擎的情况下)中)。
我遇到的问题是,所有这些视图的创建和更新似乎都是图书馆应该做的事情,而不是我应该手动做的事情。是否有与 GAE 一起使用的工具,您可以在其中指定数据的某些视图,然后期望它们将被适当地创建和处理?我相信CouchDB会这样做......
google-app-engine - 在非关系型 DBMS(AppEngine 中的 BigTable)中,我应该如何为群发消息类型的系统设置实体?
想象一下,例如,我有很多用户。每次用户发送消息时,他/她都可以向其他用户列表发送消息(类似于群发电子邮件)。但是,我只想存储一次消息以节省存储空间。因此,当其中一位消息接收者打开他的邮箱时,他/她必须在那里查询该消息。在设置消息系统的实体(表)方面,什么更有效?请注意:在非 RDBMS 中,不允许连接查询。那么这是一个合理的设置,我怎样才能使它更有效(1):
或者我应该采用以下策略(2):
哪种策略似乎更有效?即遍历arraylist 比简单地遍历DBMS 慢吗?
任何意见将不胜感激。
*注意:消息可以任意长,因此我不想存储同一消息的多个副本。
谢谢你。
download - 如何将 MySQL 之类的大表下载到我的电脑中?
如何将 MySQL 之类的大表下载到我的电脑中?