高读/写数据存储

时间:2018-03-18 01:14:41

标签: sql elasticsearch

我正在设计一个短链接服务。当人们点击我的一个短链接时,我想收集一些数据,如ip地址,useragent等,然后将它们转发到目的地。如果我的链接表增长到数千万,那么存储这些数据的最佳方法是什么。我不确定是否使用像弹性搜索这样的sql。

1 个答案:

答案 0 :(得分:1)

这是一个基于意见的问题,但我会尽力回答。 您的操作性能主要取决于您将要具有哪种类型的查询。所以真正的问题是你想用这个数据做什么?以下是处理大量数据时的一些概念:

批量插入

如果您需要使用一个请求保存大量数据记录, RDBMS elasticsearch 都可以为您提供实现这一目标的方法。 (postgreSQL populate dataelasticsearch Bulk API

数据分区

如果您处理的是大量数据,那么查询的执行时间会随着数据量的增长而增加。在某些时候,您可能会意识到,您需要应用data partitioning

使用 elasticsearch ,您可以创建time-based-indices:您可以保存此流量分析"进入2018-03流量,2018-04流量等指数。然后你可以使用aliases在一个名称下引用它们。请参阅what-are-aliases-in-elasticsearch-for问题。 Postgres ,它还为您提供了table partitioning

的方法

到目前为止,让我们看看其他一些方面:

数据结构

  1. 您的架构是否包含强预定义,复杂规则
    如果没有(我认为这是你的情况),你可以使用elasticsearch。

  2. 将来您是否需要添加/删除字段 现有架构?
    Elasticsearch更灵活地接受现有索引中的新字段 - 您实际上并不需要做任何事情 - 在RDMS中您应该自己管理它 - 也就是更新表定义。

    < / LI>

    基于意见的结论

    上述假设和假设,您希望在某些时候运行数据分析并将其可视化,这使我得出结论,弹性搜索可能更适合您的情况。使用kibana,您可以开箱即用。

    注意:
    1。我将PostgreSQL用于给定的RDBMS链接,因为我对此很熟悉。
    2。您还应该考虑RDBMS与弹性搜索的Scalability