小公司如何为历史数据存储选择合适的数据库
Posted
技术标签:
【中文标题】小公司如何为历史数据存储选择合适的数据库【英文标题】:How to choose the right database for historic data storage for small company 【发布时间】:2019-09-13 18:06:26 【问题描述】:我正在创建一个新的数据库来存储我们历史积累的所有 JSON 文件(数据不多,在 10 GB 的范围内)。我们是一家非常小的公司,这个数据库将主要在内部用于阅读目的。我正在为选择哪个数据库而苦苦挣扎——MongoDB、DynamoDB、Cassandra、mysql、Postgres、HBase 等。我正在考虑选择基于 NoSQL 的数据库,因为它看起来更灵活。我们的想法是建立一个存储,我们公司的任何人都可以从中查询和获取数据(存在于 JSON 文件中)并随后执行分析。
【问题讨论】:
如果您需要“...我们公司的任何人...”来查询数据,也许您还需要关注允许他们访问、过滤和聚合数据的 GUI 工具数据。 保存 JSON 几乎需要 NoSQL,但是如果数据没有组织(即可索引),那么您不妨将其分段并将其存储在 Amazon S3 或一些类似的平面存储中以供下载和分析本地。 @TheImpaler 你是对的,从长远来看,我可能需要一个可视化界面来为我的团队提供更好的可访问性,但现在我只想运行一个数据库,以便他们可以使用数据. 当然@cYrixmorten,但每次有人想从数据中获取特定信息时,平面文件存储系统可能需要一些冗余工作。不过谢谢你的建议。 如果在 json 中搜索内容是关键,那么也许 elasticsearch 是有意义的。 【参考方案1】:现代关系数据库(MySQL、Postgres)支持“JSON”列,因此如果您的数据没有已知的固定架构,它们也是一个可行的选择。同样,现代 NoSQL 数据库(例如 mongodb)也添加了事务等传统 SQL 功能。所以区别就模糊了。
要确定哪种数据库适合您的需求,您需要考虑如何访问数据:
您是否需要高效更新记录(如果需要,是否需要交易)还是只想添加新记录?
是需要通过某个key来获取特定的记录还是需要处理大量的记录来汇总数据(后者称为“分析处理”)
您是否希望有多个表,其中查询在它们之间连接数据? (听起来您目前不需要这个,但考虑到数据库的未来是值得的)
如果不需要更新并且您需要聚合可能的记录,您可以使用 AWS Athena / Presto / Drill 之类的工具来查询存储在本地服务器或 AWS S3 之类的东西上的普通文件。
Cassandra、HBASE 是具有高度可扩展性的专用数据库,并且会为这种可扩展性牺牲一些功能。对于这么小的数据库似乎不合适。
Mongodb 易于管理且可横向扩展,但由于其 NoSQL 传统而存在一些限制。
MySQL/Postgres 都易于管理,并且可以轻松处理 10 GB 的数据。在分析处理方面,Postgres 更加复杂和强大。当涉及到“事务处理”时,MySQL 更易于管理且性能非常好——即更新和查询特定记录(当您有一个索引可以快速引导您找到想要的记录时)
【讨论】:
以上是关于小公司如何为历史数据存储选择合适的数据库的主要内容,如果未能解决你的问题,请参考以下文章