【问题标题】:Suggestions for cloud DB for 20M+ records?对 20M+ 记录的云数据库的建议?
【发布时间】:2017-06-09 14:27:50
【问题描述】:

我将运行一个应用程序,它的表很少,但一个表大约 30-50K,另一个将是 20-25M 行,我需要做一些查询,使用多个列上的一些 LIKE 子句以及列上的其他限定符。

数据会每月刷新一次,因此只会读取,不会写入或更新。

事实证明,Google bigQuery 在连接与“like”搜索和“order by”相结合时表现不佳,所以我很恐慌。像这样的搜索实际上会引发资源错误或需要数百秒才能执行:

SELECT
s.site as site,
s.rank as rank,
s.visitors as visitors,
s.store_id as store_id,
s.currency as currency,
p.title as title,
p.product_type as product_type,
p.handle as handle,
p.price as price,
p.created_at as created_at,
p.image_url as image_url,
p.description as description
FROM eComData.stores s INNER JOIN eComData.products p
ON s.store_id = p.store_id
WHERE (
    title like '%foo%'
    OR
    product_type like '%foo%'
    OR
    description like '%foo%'
)
ORDER BY rank
LIMIT 1000 OFFSET 0

您会建议哪种云解决方案可以处理大型数据集,更重要的是,查询速度?

我的选择是 1) 优化 Google bigQuery 运行速度更快(看起来不太好) 2) 谷歌数据存储 3) 亚马逊极光 4) 亚马逊 DynamoDB

我想听听您对上述任何解决方案的体验,并期待您的建议。谢谢!

【问题讨论】:

  • 您使用的是标准 SQL 吗?旧版 SQL 不会自动通过连接推送过滤器。
  • 嗯,您发现了哪些研究和具体问题?由于您包含了数据存储,因此您似乎还没有进行太多研究,这使您的问题过于广泛。也就是说,看看谷歌云扳手。
  • @ZigMandel,对不起,如果我的问题看起来很宽泛——我是一个做 php 和 mySQL 的前端人员,所以我对大数据非常陌生。在查看了 DataStore 之后,我发现没有办法执行连接,所以肯定不行。
  • @ElliottBrossard,我未选中 Legacy SQL(哎呀!),这似乎已经修复了荒谬的查询时间 - 不知道为什么 bigQuery 只是对此抛出警告或错误。我曾考虑将表合并到一个超级表中,因此我不需要执行连接,但是调用没有 ORDER 和 WHERE 子句的 SQL 来写入表似乎也不起作用 - 对此选项开放当然!
  • “调用没有 ORDER 和 WHERE 子句的 SQL 来写入表似乎也不起作用”是什么意思?

标签: mysql google-app-engine google-cloud-datastore google-bigquery amazon-dynamodb


【解决方案1】:

您的数据有 2000 万行。这根本不是真正的大数据规模。

尝试 aws 红移。它是一个用于存储结构化数据的 AWS 原生数据仓库。它具有内置的自动缩放功能,您可以在其中线性扩展。

  • sreeni

【讨论】:

    【解决方案2】:

    这似乎是迁移到 Amazon Redshift 的理想案例。

    • 我曾为迁移(写入)分析数据的公司工作过 Redshift 仓库每天有超过 2000 万条记录。 Redshift,具有面向列的写入优化,确保 您有足够的资源来查询大型数据集。
    • 它的写入速度非常缓慢。但既然你应该阅读更多 比你写的(根据你的要求 - 在 问题),这对你来说不是问题。
    • Redshift Official Documentation 详尽而广泛 可通过 Internet 获得支持。
    • 缩放很容易。您可以根据自己的意愿添加/删除节点,并且 要求。
    • 但是,如果您还有另一个仓库,则某些功能 对于非 postgres 有所不同。大约 90% 的事情保持不变,这 不会是主要的行政问题。有一个功能/功能列表 Redshift 不支持,这在他们的 文档。
    • 如果您有一个仪表板工具,Redshift 也能很好地执行 需要连接到数据源并定期刷新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多