我应该将 Mysql 或 Firebase 用于大数据吗?
Posted
技术标签:
【中文标题】我应该将 Mysql 或 Firebase 用于大数据吗?【英文标题】:Should i use Mysql or Firebase with big data? 【发布时间】:2021-03-02 07:08:51 【问题描述】:我将第一次用大数据做一个项目。在该项目中,我想每 10 秒从不同客户的电能分析仪中获取数据。因此,对于 10.000 台设备,10 年将有 3150 亿行。如果经营理念比我预期的要好,我可能不得不扩大规模。
我可以使用 mysql 或 firebase db 来处理这种大数据吗?托管服务怎么样?我需要考虑托管服务的一些参数吗?
【问题讨论】:
让我们看看您将应用的主要查询。它们可能是微不足道的,以至于引擎无关紧要。或者它们可能太乱了,以至于没有引擎可以工作。另外,请提供一个暂定的CREATE TABLE
。
【参考方案1】:
一般来说,作为大数据解决方案的数据库,谷歌建议Cloud Bigtable。该数据库是为此类项目设计的。如果您需要 SQL,它可以很容易地连接到BigQuery 引擎。您可以轻松地将其连接到 Apache 生态系统。
如果您想或必须使用 SQL 数据库,Google 有 Spanner,它可以无限扩展。
这两种解决方案都不便宜,但只有那些能够提供足够的扩展可能性并能够处理大型工作负载。
您可以尝试其他解决方案,例如 SQL 实例或 Firestore,甚至是实时数据库(不确定您所说的 Firebase db 是什么意思),但如果您似乎需要扩大规模,您还有很多工作要做。
首先应考虑查看简短的用例描述 Bigtable。
【讨论】:
【参考方案2】:您需要每 10 秒获取 10 年前的数据吗?我怀疑。
您需要上个月的数据图表吗?也许。但是没有足够的像素来显示该粒度的所有数据点。
我会认真考虑及时汇总数据,然后考虑扔掉原始数据。
315B 行所占用的 TB 数据量将超过当今现成系统的容量。想想扫描所有数据需要多少小时。 “大数据”通常意味着“扫描数据”。 RDBMS 通常意味着“结构化数据”以提高效率。
更多关于 MySQL 中的汇总表:http://mysql.rjweb.org/doc.php/summarytables
(看看这个网站;我已经就这样的“科学”数据向几个人提供过建议。或者给我们更多细节,我会为你量身定制我的建议。)
【讨论】:
感谢您的回答。对于网络的瞬态响应,我可以使用不同类型的能量分析仪,所以我认为 10 秒真的没有必要。即使是 1 小时的样本量也足够了。无论如何谢谢你。 @CagdasAkdemir - 另一种方法是每 10 秒收集一次,但不存储详细信息;而是汇总并仅存储每小时的平均值、最小值、最大值等。这有助于克服不稳定或尖峰数据。 (不知道你的数据是不是这样) 十亿行可能会占用 100GB 的磁盘——这几天非常实用。以上是关于我应该将 Mysql 或 Firebase 用于大数据吗?的主要内容,如果未能解决你的问题,请参考以下文章
我应该将 Firebase 凭据存储在 iCloud 中吗?
用于 Firebase 实时数据库/Firebase 身份验证的 Android 唯一密钥
我应该在哪里从 UIViewController 中的 firebase 加载数据