是Oracle还是MySQL或者他们自己构建的东西?
在BigTable/GFS和Cassandra术语中,SSTable的定义是什么?
是否有人会使用BigTable而不是BigQuery?两者似乎都支持读写操作,后者提供高级'查询'操作.
我需要开发一个联盟网络(因此我需要跟踪点击次数和'销售'),所以我很困惑,因为bigQuery似乎只是一个更好的API的bigTable.
cloud bigtable google-bigquery google-cloud-platform google-cloud-spanner
很多"BAW"(大屁股网站)正在使用数据存储和检索技术,这些技术依赖于带有索引的巨大表,并使用在查询中不会/不能使用JOIN的查询(BigTable,HQL等)处理可伸缩性和分片数据库.当你有大量和非常相关的数据时,它是如何工作的?
我只能推测,这种加入的大部分必须在应用程序方面完成,但这不会开始变得昂贵吗?如果您必须对几个不同的表进行多次查询以获取要编译的信息,该怎么办?是不是多次开始变得比仅仅使用连接更昂贵的数据库?我想这取决于你有多少数据?
对于常用的ORM,它们如何处理无法使用连接?今天在大量使用的ORM中是否有对此的支持?或者大多数必须接近这一级别数据的项目是否倾向于自行推出?
所以这不适用于我现在正在进行的任何项目,但现在已经有几个月了,我只能猜测"最佳实践"是什么.我从来没有必要在任何项目中解决这个问题,因为他们从未达到过需要的规模.希望这个问题能帮助其他人......
如下所述,ORM在没有连接的情况下"无法正常工作".是否有其他数据访问层已经可供处理此级别数据的开发人员使用?
编辑: 有些澄清,Vinko Vrsalovic说:
"我相信窃笑者想要讨论NO-SQL,其中事务数据被非规范化并在Hadoop或BigTable或Cassandra方案中使用."
这正是我所说的.
抓住xkcd参考的人的奖励积分.
我试图弄清楚这些新的数据存储如bigtable,hbase和cassandra到底是什么.
我处理大量的股票市场数据,数十亿行价格/报价数据,每天可以累计达到100千兆字节(尽管这些文本文件通常压缩至少一个数量级).这个数据基本上是一些数字,两个或三个短字符串和一个时间戳(通常是毫秒级).如果我必须为每一行选择一个唯一的标识符,我将不得不选择整行(因为交换可能会在同一毫秒内为同一个符号生成多个值).
我想将这些数据映射到bigtable(我包括它的衍生物)的最简单方法是按符号名称和日期(这可能会返回一个非常大的时间序列,超过百万个数据点并非闻所未闻).通过阅读他们的描述,看起来这些系统可以使用多个密钥.我还假设十进制数不是键的好选择.
其中一些系统(例如Cassandra)声称能够进行范围查询.在给定的一天,上午11:00到下午1:30之间,我是否能够有效地查询MSFT的所有值?
如果我想搜索给定日期的所有符号,并请求价格在10美元到10.25美元之间的所有符号,那么该怎么办?所以我正在搜索这些值,并希望返回键作为结果?
如果我想得到两个系列,从另一个中减去一个,并返回两次系列及其结果,我将在自己的程序中做他的逻辑怎么办?
阅读相关论文似乎表明这些系统不适合大规模时间序列系统.但是,如果谷歌地图等系统基于它们,我认为时间序列也应该有效.例如,将时间视为x轴,将价格视为y轴,将符号视为命名位置 - 突然之间看起来像bigtable应该是时间序列的理想存储(如果整个地球可以存储,检索,放大和注释,股市数据应该是微不足道的).
有些专家可以指出我正确的方向或澄清任何误解.
谢谢
我已经阅读了一些关于Bigtable和NOSQL的文章.他们避免JOIN操作非常有趣.
作为一个基本的例子,让我们采用Employee和Department表,并假设数据分布在多个表/服务器上.
只是想知道,如果数据分布在多个服务器上,我们如何进行JOIN或UNION操作?
重复
我对Google的Bigtable了解不多,但我想知道Google的Bigtable和MySQL之类的关系数据库之间的区别是什么.两者有什么限制?
我基本上拥有经典的多对多模型.用户,奖励以及用户和奖励之间的"多对多"表格映射.
每个用户拥有400个奖项的订单,每个奖励给予大约1/2个用户.
我想迭代所有用户的奖励并总结他们的积分.在SQL中,它将是多对多之间的表连接,然后遍历每个行.在具有MySQL实例的体面机器上,400行应该不是什么大问题.
在应用程序引擎上,我看到大约需要10秒才能完成总和.大部分时间都花在Google的数据存储中.这是cProfile的前几行
ncalls tottime percall cumtime percall filename:lineno(function) 462 6.291 0.014 6.868 0.015 {google3.apphosting.runtime._apphosting_runtime___python__apiproxy.Wait} 913 0.148 0.000 1.437 0.002 datastore.py:524(_FromPb) 8212 0.130 0.000 0.502 0.000 datastore_types.py:1345(FromPropertyPb) 462 0.120 0.000 0.458 0.001 {google3.net.proto._net_proto___parse__python.MergeFromString}
我的数据模型错了吗?我在查找错误吗?这是一个我必须处理缓存和bulkupdating(这将是一个王室痛苦的屁股)的缺点.
对不起,如果这个问题有些主观.我是"可以存储","分布式商店"或类似这样的概念的新手.我真的很想知道他们有什么共同之处,并希望对所有这些有所了解.如果我想编写与此类似的产品,我需要准备什么?