问题标签 [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 回答
55730 浏览

database - Google 的 Bigtable 与关系数据库

重复

我对 Google 的 Bigtable 了解不多,但我想知道 Google 的 Bigtable 和 MySQL 等关系数据库之间的区别是什么。两者的局限性是什么?

0 投票
3 回答
1898 浏览

storage - 实施大规模日志文件分析

谁能指出我的参考资料或提供有关 Facebook、Yahoo、Google 等公司如何执行他们为运营特别是 Web 分析执行的大规模(例如多 TB 范围)日志分析的高级概述?

特别关注网络分析,我对两个密切相关的方面感兴趣:查询性能和数据存储。

我知道一般的方法是使用 map reduce 将每个查询分布在一个集群上(例如使用 Hadoop)。但是,最有效的存储格式是什么?这是日志数据,因此我们可以假设每个事件都有一个时间戳,并且通常数据是结构化的而不是稀疏的。大多数 Web 分析查询涉及分析两个任意时间戳之间的数据切片并检索该数据中的聚合统计信息或异常情况。

像 Big Table(或 HBase)这样的面向列的数据库会是一种有效的方式来存储,更重要的是,查询这些数据吗?您选择行子集(基于时间戳)的事实是否违背了这种存储类型的基本前提?将其存储为非结构化数据会更好,例如。反向索引?

0 投票
1 回答
604 浏览

python - 向现有 Google AppEngine 数据模型/实体添加新属性的问题

在 GAE 中,我有一个名为 Foo 的模型,其中包含现有实体,并尝试向 Foo 添加一个名为memcached的新属性,该属性在最后一次将该值设置为 memcache 时采用 datetime 值。如果我尝试对此属性进行查询和排序,甚至筛选没有memcached值的实体,则不会返回尚未为此属性设置值的实体。我在这里遗漏了什么,或者作为替代方案,是否有一种快速的方法可以为给定模型的每个实体上的新属性设置值?

我创建了以下模型的一堆实体,

然后给这个模型添加一个属性,

当我对查询进行排序或过滤时,不考虑新属性的默认值。

0 投票
1 回答
1380 浏览

python - 与 Google App Engine 和 BigTable 的递归关系

在经典的关系数据库中,我有下表:

我正在尝试将此表转换为 Google App Engine 表。我的问题是字段 MotherId 和 FatherId。我尝试了下面的代码,但没有机会。Python 说它不知道对象类型 Person。

有人知道我们如何在 Google App Engine 表中建模递归关系吗?我该如何解决 App Engine 的限制?

更新 我想稍微扩展一下问题......如果我想添加一组孩子怎么办?

我试过这个,但它不起作用。知道我做错了什么吗?

谢谢!

0 投票
5 回答
6255 浏览

django - BigTable 是慢还是我笨?

我基本上有经典的多对多模型。一个用户,一个奖项,以及用户和奖项之间的“多对多”表映射。

每个用户有大约 400 个奖励,每个奖励给大约 1/2 的用户。

我想遍历所有用户的奖励并总结他们的积分。在 SQL 中,它将是多对多之间的表连接,然后遍历每一行。在具有 MySQL 实例的体面机器上,400 行根本不是什么大问题。

在应用引擎上,我看到大约需要 10 秒来计算总和。大部分时间都花在 Google 的数据存储中。这是 cProfile 的前几行

我的数据模型错了吗?我做错了吗?这是我必须处理缓存和批量更新的一个缺点吗(这将是一个非常痛苦的事情)。

0 投票
4 回答
803 浏览

mysql - 向 MySQL 单元格添加时间维度

有没有办法保留对 MySQL 表中每一行的每一列的每次更改的时间戳记录?这样我就永远不会丢失任何数据并保留转换的历史记录。行删除可能只是将“已删除”列设置为 true,但可以恢复。

我在看HyperTable ,一个 Google 的BigTable的开源实现,这个功能真的让我大吃一惊。如果可以在 MySQL 中使用它会很棒,因为我的应用程序无法处理大量数据,而这些数据足以证明部署 HyperTable 是合理的。可以在此处查看有关其工作原理的更多详细信息。

是否有任何配置、插件、fork 或任何可以将这一功能添加到 MySQL 的东西?

0 投票
4 回答
6119 浏览

database-design - Bigtable 数据库设计理论

我非常精通关系数据库设计的理论和实践。

我知道什么可行,什么不可行,什么是高性能的,什么是可维护的(几乎——当你开始拥有真实数据时,总会有调整的地方)。

似乎我找不到关于分布式可扩展数据库的大量知识,例如谷歌的 Bigtable(用于为谷歌应用引擎编写应用程序)。什么有效,什么无效,什么可以扩展,为什么不可以?

当然,有一些博客文章和文章,但是是否有关于为 bigtable 和类似数据库范例设计数据库的书籍或学术研究论文?

0 投票
8 回答
9109 浏览

sql-server - 一天3000万条记录,SQL Server跟不上,还需要其他数据库系统吗?

前段时间,我想为我们的数百万用户网站建立一个新的统计系统,为我们的客户记录和报告用户操作。

数据库设计非常简单,包含一个表,带有一个 foreignId(200,000 个不同的 id)、一个 datetime 字段、一个 actionId(30 个不同的 id)和另外两个包含一些元信息(只是 smallints)的字段。对其他表没有限制。此外,我们有两个索引,每个索引包含 4 个字段,这些字段不能被删除,因为当我们拥有较小的索引时用户会超时。foreignId 是最重要的字段,因为每个查询都包含此字段。

我们选择使用 SQL 服务器,但实施后关系数据库似乎不是一个完美的选择,因为我们不能每天插入 3000 万条记录(它只是插入,我们不做任何更新),同时还要做很多随机读取数据库;因为索引的更新速度不够快。Ergo:我们有一个大问题 :-) 我们暂时解决了这个问题,但是

关系数据库似乎不适合这个问题!

像 BigTable 这样的数据库会是更好的选择吗?为什么?或者在处理这类问题时还有其他更好的选择吗?

注意。此时我们使用单 8 核 Xeon 系统,4 GB 内存和 Win 2003 32 位。据我所知,RAID10 SCSI。索引大小约为表大小的 1.5 倍。

0 投票
7 回答
3246 浏览

orm - 没有 JOIN 的生活......理解和常见做法

许多“BAW”(大网站)正在使用依赖于带有索引的大表的数据存储和检索技术,并使用不会/不能在其查询中使用 JOIN 的查询(BigTable、HQL 等)处理可伸缩性和分片数据库。当您拥有大量非常相关的数据时,它是如何工作的?

我只能推测这种连接的大部分必须在应用程序方面完成,但这不是开始变得昂贵吗?如果您必须对几个不同的表进行多次查询以获取要编译的信息怎么办?与首先使用连接相比,多次访问数据库会不会变得更加昂贵?我想这取决于你有多少数据?

而对于常用的 ORM,他们倾向于如何处理无法使用 join 的问题?在当今大量使用的 ORM 中是否对此提供支持?还是大多数必须接近这种数据水平的项目都倾向于自行推出?

所以这不适用于我正在做的任何当前项目,但这是我几个月来一直在想的事情,我只能推测什么是“最佳实践”。我从来没有需要在我的任何项目中解决这个问题,因为它们从未达到需要的规模。希望这个问题也能帮助其他人..

正如下面有人所说,没有连接的 ORM “不起作用”。是否有其他数据访问层可供开发人员使用此级别的数据?

编辑: 为了澄清一下,Vinko Vrsalovic说:

“我相信 snicker 想要谈论 NO-SQL,其中事务数据被非规范化并用于 Hadoop 或 BigTable 或 Cassandra 方案。”

这确实是我要说的。

那些获得 xkcd 参考的人的奖励积分。

0 投票
6 回答
15868 浏览

cassandra - 将海量有序时间序列数据存储在 bigtable 衍生品中

我试图弄清楚这些新奇的数据存储,如 bigtable、hbase 和 cassandra 到底是什么。

我处理大量的股票市场数据,数十亿行的价格/报价数据,每天可以添加多达 100 GB 的数据(尽管这些文本文件通常至少压缩一个数量级)。这些数据基本上是一些数字、两三个短字符串和一个时间戳(通常是毫秒级)。如果我必须为每一行选择一个唯一标识符,我将不得不选择整行(因为交换可能会在同一毫秒内为同一符号生成多个值)。

我想将这些数据映射到 bigtable(我包括它的派生词)的最简单方法是通过符号名称和日期(这可能会返回一个非常大的时间序列,超过一百万个数据点并非闻所未闻)。从阅读他们的描述来看,这些系统似乎可以使用多个键。我还假设十进制数字不是键的好候选者。

其中一些系统(例如 Cassandra)声称能够进行范围查询。例如,我是否能够在上午 11:00 到下午 1:30 之间有效地查询给定日期的 MSFT 的所有值?

如果我想搜索给定日期的所有符号,并请求价格在 10 美元到 10.25 美元之间的所有符号(所以我正在搜索值,并希望返回键作为结果)怎么办?

如果我想得到两个时间序列,从另一个中减去一个,然后返回两个时间序列及其结果,我是否必须在我自己的程序中执行他的逻辑?

阅读相关论文似乎表明这些系统不太适合大规模时间序列系统。但是,如果像谷歌地图这样的系统是基于它们的,我认为时间序列应该也可以工作。例如,将时间视为 x 轴,将价格视为 y 轴,将符号视为命名位置——突然之间,bigtable 似乎应该是时间序列的理想存储(如果可以存储、检索整个地球) ,缩放和注释,股市数据应该是微不足道的)。

一些专家可以指出我正确的方向或消除任何误解。

谢谢