Alternatives to TimescaleDB logo

Alternatives to TimescaleDB

InfluxDB, MongoDB, Citus, Druid, and PipelineDB are the most popular alternatives and competitors to TimescaleDB.
209
370
+ 1
44

What is TimescaleDB and what are its top alternatives?

TimescaleDB is an open-source time-series database optimized for fast ingest and complex queries. It is based on PostgreSQL and extends SQL to efficiently handle time-series data. TimescaleDB's key features include data compression, automated data retention policies, continuous aggregations, and retention with partitioning. However, its limitations include limited support for parallel query execution and a steeper learning curve compared to traditional time-series databases.

  1. InfluxDB: InfluxDB is a popular open-source time-series database known for its high performance and scalability. Key features include a SQL-like query language, data retention policies, and real-time analytics. Pros: High scalability, built-in handling of time-series data. Cons: Steeper learning curve for beginners.
  2. Prometheus: Prometheus is an open-source monitoring and alerting toolkit designed for capturing real-time metrics. Key features include multi-dimensional data model, a powerful query language, and built-in visualization tools. Pros: Easy integration with Kubernetes, efficient storage layer. Cons: Limited support for long-term storage and complex queries.
  3. VictoriaMetrics: VictoriaMetrics is a high-performance, cost-effective time-series database with features like low memory usage, highly optimized storage engine, efficient data storage, and support for Prometheus data format. Pros: High performance, low memory footprint. Cons: Limited community support and documentation.
  4. OpenTSDB: OpenTSDB is a distributed time-series database based on HBase designed for storing and serving massive amounts of time series data. Key features include scalable architecture, built-in aggregation functions, and easy integration with Hadoop ecosystem. Pros: Scalable storage backend, ecosystem integration. Cons: Steeper learning curve for setup and configuration.
  5. Cassandra: Apache Cassandra is a distributed NoSQL database known for its high availability and scalability. While not specifically designed for time-series data, Cassandra can be used to store and query time-series data efficiently. Pros: High availability, linear scalability. Cons: Requires manual data modeling for time-series data storage.
  6. CockroachDB: CockroachDB is a distributed SQL database known for its horizontal scalability and strong consistency. While not built specifically for time-series data, it can be used to store and query time-series data efficiently. Pros: Scalability, ACID compliance. Cons: Higher resource usage compared to specialized time-series databases.
  7. Druid: Apache Druid is a high-performance, column-oriented, distributed data store for real-time analytics. Key features include sub-second query latency, scalable architecture, and support for time-series data. Pros: Real-time analytics, scalable architecture. Cons: Complexity in setup and configuration.
  8. QuestDB: QuestDB is a fast, open-source SQL database designed for high-frequency time-series data. It offers features like sub-millisecond query latency, on-disk columnar storage, and compatibility with SQL queries. Pros: High performance, low latency. Cons: Limited integrations and extensions compared to other databases.
  9. Graphite: Graphite is an open-source monitoring tool with a time-series database backend. It is known for its scalability, flexible dashboarding, and powerful graphing capabilities. Pros: Scalability, flexible visualization. Cons: Limited support for advanced query capabilities and complex analytics.
  10. MemSQL: MemSQL is a distributed, in-memory, SQL database designed for real-time analytics and data processing. While not specific to time-series data, MemSQL's performance and scalability make it a viable alternative for handling time-series data efficiently. Pros: In-memory processing, high performance. Cons: Limited community support for time-series use cases.

Top Alternatives to TimescaleDB

  • InfluxDB
    InfluxDB

    InfluxDB is a scalable datastore for metrics, events, and real-time analytics. It has a built-in HTTP API so you don't have to write any server side code to get up and running. InfluxDB is designed to be scalable, simple to install and manage, and fast to get data in and out. ...

  • MongoDB
    MongoDB

    MongoDB stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema. MongoDB was also designed for high availability and scalability, with built-in replication and auto-sharding. ...

  • Citus
    Citus

    It's an extension to Postgres that distributes data and queries in a cluster of multiple machines. Its query engine parallelizes incoming SQL queries across these servers to enable human real-time (less than a second) responses on large datasets. ...

  • Druid
    Druid

    Druid is a distributed, column-oriented, real-time analytics data store that is commonly used to power exploratory dashboards in multi-tenant environments. Druid excels as a data warehousing solution for fast aggregate queries on petabyte sized data sets. Druid supports a variety of flexible filters, exact calculations, approximate algorithms, and other useful calculations. ...

  • PipelineDB
    PipelineDB

    PipelineDB is an open-source relational database that runs SQL queries continuously on streams, incrementally storing results in tables. ...

  • Cassandra
    Cassandra

    Partitioning means that Cassandra can distribute your data across multiple machines in an application-transparent matter. Cassandra will automatically repartition as machines are added and removed from the cluster. Row store means that like relational databases, Cassandra organizes data by rows and columns. The Cassandra Query Language (CQL) is a close relative of SQL. ...

  • Elasticsearch
    Elasticsearch

    Elasticsearch is a distributed, RESTful search and analytics engine capable of storing data and searching it in near real time. Elasticsearch, Kibana, Beats and Logstash are the Elastic Stack (sometimes called the ELK Stack). ...

  • Clickhouse
    Clickhouse

    It allows analysis of data that is updated in real time. It offers instant results in most cases: the data is processed faster than it takes to create a query. ...

TimescaleDB alternatives & related posts

InfluxDB logo

InfluxDB

1K
1.2K
174
An open-source distributed time series database with no external dependencies
1K
1.2K
+ 1
174
PROS OF INFLUXDB
  • 58
    Time-series data analysis
  • 30
    Easy setup, no dependencies
  • 24
    Fast, scalable & open source
  • 21
    Open source
  • 20
    Real-time analytics
  • 6
    Continuous Query support
  • 5
    Easy Query Language
  • 4
    HTTP API
  • 4
    Out-of-the-box, automatic Retention Policy
  • 1
    Offers Enterprise version
  • 1
    Free Open Source version
CONS OF INFLUXDB
  • 4
    Instability
  • 1
    Proprietary query language
  • 1
    HA or Clustering is only in paid version

related InfluxDB posts

Hi everyone. I'm trying to create my personal syslog monitoring.

  1. To get the logs, I have uncertainty to choose the way: 1.1 Use Logstash like a TCP server. 1.2 Implement a Go TCP server.

  2. To store and plot data. 2.1 Use Elasticsearch tools. 2.2 Use InfluxDB and Grafana.

I would like to know... Which is a cheaper and scalable solution?

Or even if there is a better way to do it.

See more
MongoDB logo

MongoDB

91.4K
78.9K
4.1K
The database for giant ideas
91.4K
78.9K
+ 1
4.1K
PROS OF MONGODB
  • 827
    Document-oriented storage
  • 593
    No sql
  • 553
    Ease of use
  • 464
    Fast
  • 410
    High performance
  • 257
    Free
  • 218
    Open source
  • 180
    Flexible
  • 145
    Replication & high availability
  • 112
    Easy to maintain
  • 42
    Querying
  • 39
    Easy scalability
  • 38
    Auto-sharding
  • 37
    High availability
  • 31
    Map/reduce
  • 27
    Document database
  • 25
    Easy setup
  • 25
    Full index support
  • 16
    Reliable
  • 15
    Fast in-place updates
  • 14
    Agile programming, flexible, fast
  • 12
    No database migrations
  • 8
    Easy integration with Node.Js
  • 8
    Enterprise
  • 6
    Enterprise Support
  • 5
    Great NoSQL DB
  • 4
    Support for many languages through different drivers
  • 3
    Drivers support is good
  • 3
    Aggregation Framework
  • 3
    Schemaless
  • 2
    Fast
  • 2
    Managed service
  • 2
    Easy to Scale
  • 2
    Awesome
  • 2
    Consistent
  • 1
    Good GUI
  • 1
    Acid Compliant
CONS OF MONGODB
  • 6
    Very slowly for connected models that require joins
  • 3
    Not acid compliant
  • 1
    Proprietary query language

related MongoDB posts

Jeyabalaji Subramanian

Recently we were looking at a few robust and cost-effective ways of replicating the data that resides in our production MongoDB to a PostgreSQL database for data warehousing and business intelligence.

We set ourselves the following criteria for the optimal tool that would do this job: - The data replication must be near real-time, yet it should NOT impact the production database - The data replication must be horizontally scalable (based on the load), asynchronous & crash-resilient

Based on the above criteria, we selected the following tools to perform the end to end data replication:

We chose MongoDB Stitch for picking up the changes in the source database. It is the serverless platform from MongoDB. One of the services offered by MongoDB Stitch is Stitch Triggers. Using stitch triggers, you can execute a serverless function (in Node.js) in real time in response to changes in the database. When there are a lot of database changes, Stitch automatically "feeds forward" these changes through an asynchronous queue.

We chose Amazon SQS as the pipe / message backbone for communicating the changes from MongoDB to our own replication service. Interestingly enough, MongoDB stitch offers integration with AWS services.

In the Node.js function, we wrote minimal functionality to communicate the database changes (insert / update / delete / replace) to Amazon SQS.

Next we wrote a minimal micro-service in Python to listen to the message events on SQS, pickup the data payload & mirror the DB changes on to the target Data warehouse. We implemented source data to target data translation by modelling target table structures through SQLAlchemy . We deployed this micro-service as AWS Lambda with Zappa. With Zappa, deploying your services as event-driven & horizontally scalable Lambda service is dumb-easy.

In the end, we got to implement a highly scalable near realtime Change Data Replication service that "works" and deployed to production in a matter of few days!

See more
Robert Zuber

We use MongoDB as our primary #datastore. Mongo's approach to replica sets enables some fantastic patterns for operations like maintenance, backups, and #ETL.

As we pull #microservices from our #monolith, we are taking the opportunity to build them with their own datastores using PostgreSQL. We also use Redis to cache data we’d never store permanently, and to rate-limit our requests to partners’ APIs (like GitHub).

When we’re dealing with large blobs of immutable data (logs, artifacts, and test results), we store them in Amazon S3. We handle any side-effects of S3’s eventual consistency model within our own code. This ensures that we deal with user requests correctly while writes are in process.

See more
Citus logo

Citus

58
122
10
Worry-free Postgres for SaaS
58
122
+ 1
10
PROS OF CITUS
  • 6
    Multi-core Parallel Processing
  • 2
    Drop-in PostgreSQL replacement
  • 2
    Distributed with Auto-Sharding
CONS OF CITUS
    Be the first to leave a con

    related Citus posts

    Dan Robinson
    Shared insights
    on
    PostgreSQLPostgreSQLCitusCitus
    at

    PostgreSQL was an easy early decision for the founding team. The relational data model fit the types of analyses they would be doing: filtering, grouping, joining, etc., and it was the database they knew best.

    Shortly after adopting PG, they discovered Citus, which is a tool that makes it easy to distribute queries. Although it was a young project and a fork of Postgres at that point, Dan says the team was very available, highly expert, and it wouldn’t be very difficult to move back to PG if they needed to.

    The stuff they forked was in query execution. You could treat the worker nodes like regular PG instances. Citus also gave them a ton of flexibility to make queries fast, and again, they felt the data model was the best fit for their application.

    #DataStores #Databases

    See more
    Dan Robinson

    At Heap, we searched for an existing tool that would allow us to express the full range of analyses we needed, index the event definitions that made up the analyses, and was a mature, natively distributed system.

    After coming up empty on this search, we decided to compromise on the “maturity” requirement and build our own distributed system around Citus and sharded PostgreSQL. It was at this point that we also introduced Kafka as a queueing layer between the Node.js application servers and Postgres.

    If we could go back in time, we probably would have started using Kafka on day one. One of the biggest benefits in adopting Kafka has been the peace of mind that it brings. In an analytics infrastructure, it’s often possible to make data ingestion idempotent.

    In Heap’s case, that means that, if anything downstream from Kafka goes down, we won’t lose any data – it’s just going to take a bit longer to get to its destination. We also learned that you want the path between data hitting your servers and your initial persistence layer (in this case, Kafka) to be as short and simple as possible, since that is the surface area where a failure means you can lose customer data. We learned that it’s a very good fit for an analytics tool, since you can handle a huge number of incoming writes with relatively low latency. Kafka also gives you the ability to “replay” the data flow: it’s like a commit log for your whole infrastructure.

    #MessageQueue #Databases #FrameworksFullStack

    See more
    Druid logo

    Druid

    378
    865
    32
    Fast column-oriented distributed data store
    378
    865
    + 1
    32
    PROS OF DRUID
    • 15
      Real Time Aggregations
    • 6
      Batch and Real-Time Ingestion
    • 5
      OLAP
    • 3
      OLAP + OLTP
    • 2
      Combining stream and historical analytics
    • 1
      OLTP
    CONS OF DRUID
    • 3
      Limited sql support
    • 2
      Joins are not supported well
    • 1
      Complexity

    related Druid posts

    Shared insights
    on
    DruidDruidMongoDBMongoDB

    My background is in Data analytics in the telecom domain. Have to build the database for analyzing large volumes of CDR data so far the data are maintained in a file server and the application queries data from the files. It's consuming a lot of resources queries are taking time so now I am asked to come up with the approach. I planned to rewrite the app, so which database needs to be used. I am confused between MongoDB and Druid.

    So please do advise me on picking from these two and why?

    See more

    My process is like this: I would get data once a month, either from Google BigQuery or as parquet files from Azure Blob Storage. I have a script that does some cleaning and then stores the result as partitioned parquet files because the following process cannot handle loading all data to memory.

    The next process is making a heavy computation in a parallel fashion (per partition), and storing 3 intermediate versions as parquet files: two used for statistics, and the third will be filtered and create the final files.

    I make a report based on the two files in Jupyter notebook and convert it to HTML.

    • Everything is done with vanilla python and Pandas.
    • sometimes I may get a different format of data
    • cloud service is Microsoft Azure.

    What I'm considering is the following:

    Get the data with Kafka or with native python, do the first processing, and store data in Druid, the second processing will be done with Apache Spark getting data from apache druid.

    the intermediate states can be stored in druid too. and visualization would be with apache superset.

    See more
    PipelineDB logo

    PipelineDB

    7
    20
    0
    The Streaming SQL Database
    7
    20
    + 1
    0
    PROS OF PIPELINEDB
      Be the first to leave a pro
      CONS OF PIPELINEDB
        Be the first to leave a con

        related PipelineDB posts

        Cassandra logo

        Cassandra

        3.5K
        3.5K
        507
        A partitioned row store. Rows are organized into tables with a required primary key.
        3.5K
        3.5K
        + 1
        507
        PROS OF CASSANDRA
        • 119
          Distributed
        • 98
          High performance
        • 81
          High availability
        • 74
          Easy scalability
        • 53
          Replication
        • 26
          Reliable
        • 26
          Multi datacenter deployments
        • 10
          Schema optional
        • 9
          OLTP
        • 8
          Open source
        • 2
          Workload separation (via MDC)
        • 1
          Fast
        CONS OF CASSANDRA
        • 3
          Reliability of replication
        • 1
          Size
        • 1
          Updates

        related Cassandra posts

        Thierry Schellenbach
        Shared insights
        on
        RedisRedisCassandraCassandraRocksDBRocksDB
        at

        1.0 of Stream leveraged Cassandra for storing the feed. Cassandra is a common choice for building feeds. Instagram, for instance started, out with Redis but eventually switched to Cassandra to handle their rapid usage growth. Cassandra can handle write heavy workloads very efficiently.

        Cassandra is a great tool that allows you to scale write capacity simply by adding more nodes, though it is also very complex. This complexity made it hard to diagnose performance fluctuations. Even though we had years of experience with running Cassandra, it still felt like a bit of a black box. When building Stream 2.0 we decided to go for a different approach and build Keevo. Keevo is our in-house key-value store built upon RocksDB, gRPC and Raft.

        RocksDB is a highly performant embeddable database library developed and maintained by Facebook’s data engineering team. RocksDB started as a fork of Google’s LevelDB that introduced several performance improvements for SSD. Nowadays RocksDB is a project on its own and is under active development. It is written in C++ and it’s fast. Have a look at how this benchmark handles 7 million QPS. In terms of technology it’s much more simple than Cassandra.

        This translates into reduced maintenance overhead, improved performance and, most importantly, more consistent performance. It’s interesting to note that LinkedIn also uses RocksDB for their feed.

        #InMemoryDatabases #DataStores #Databases

        See more
        Umair Iftikhar
        Technical Architect at ERP Studio · | 3 upvotes · 436.5K views

        Developing a solution that collects Telemetry Data from different devices, nearly 1000 devices minimum and maximum 12000. Each device is sending 2 packets in 1 second. This is time-series data, and this data definition and different reports are saved on PostgreSQL. Like Building information, maintenance records, etc. I want to know about the best solution. This data is required for Math and ML to run different algorithms. Also, data is raw without definitions and information stored in PostgreSQL. Initially, I went with TimescaleDB due to PostgreSQL support, but to increase in sites, I started facing many issues with timescale DB in terms of flexibility of storing data.

        My major requirement is also the replication of the database for reporting and different purposes. You may also suggest other options other than Druid and Cassandra. But an open source solution is appreciated.

        See more
        Elasticsearch logo

        Elasticsearch

        34K
        26.5K
        1.6K
        Open Source, Distributed, RESTful Search Engine
        34K
        26.5K
        + 1
        1.6K
        PROS OF ELASTICSEARCH
        • 327
          Powerful api
        • 315
          Great search engine
        • 230
          Open source
        • 214
          Restful
        • 199
          Near real-time search
        • 97
          Free
        • 84
          Search everything
        • 54
          Easy to get started
        • 45
          Analytics
        • 26
          Distributed
        • 6
          Fast search
        • 5
          More than a search engine
        • 3
          Highly Available
        • 3
          Awesome, great tool
        • 3
          Great docs
        • 3
          Easy to scale
        • 2
          Fast
        • 2
          Easy setup
        • 2
          Great customer support
        • 2
          Intuitive API
        • 2
          Great piece of software
        • 2
          Reliable
        • 2
          Potato
        • 2
          Nosql DB
        • 2
          Document Store
        • 1
          Not stable
        • 1
          Scalability
        • 1
          Open
        • 1
          Github
        • 1
          Elaticsearch
        • 1
          Actively developing
        • 1
          Responsive maintainers on GitHub
        • 1
          Ecosystem
        • 1
          Easy to get hot data
        • 0
          Community
        CONS OF ELASTICSEARCH
        • 7
          Resource hungry
        • 6
          Diffecult to get started
        • 5
          Expensive
        • 4
          Hard to keep stable at large scale

        related Elasticsearch posts

        Tim Abbott

        We've been using PostgreSQL since the very early days of Zulip, but we actually didn't use it from the beginning. Zulip started out as a MySQL project back in 2012, because we'd heard it was a good choice for a startup with a wide community. However, we found that even though we were using the Django ORM for most of our database access, we spent a lot of time fighting with MySQL. Issues ranged from bad collation defaults, to bad query plans which required a lot of manual query tweaks.

        We ended up getting so frustrated that we tried out PostgresQL, and the results were fantastic. We didn't have to do any real customization (just some tuning settings for how big a server we had), and all of our most important queries were faster out of the box. As a result, we were able to delete a bunch of custom queries escaping the ORM that we'd written to make the MySQL query planner happy (because postgres just did the right thing automatically).

        And then after that, we've just gotten a ton of value out of postgres. We use its excellent built-in full-text search, which has helped us avoid needing to bring in a tool like Elasticsearch, and we've really enjoyed features like its partial indexes, which saved us a lot of work adding unnecessary extra tables to get good performance for things like our "unread messages" and "starred messages" indexes.

        I can't recommend it highly enough.

        See more
        Tymoteusz Paul
        Devops guy at X20X Development LTD · | 23 upvotes · 8M views

        Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).

        It always starts with an app, whatever it may be and reading the readmes available while Vagrant and VirtualBox is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into Ansible playbook(s), and only stopping when doing a clear vagrant up or vagrant reload we will have a fully working environment. As our Vagrant environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product.

        I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with Vagrant as developer boxes should be as easy as vagrant up, but the meat of our product lies in Ansible which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.

        We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab Elasticsearch, Kibana, and Logstash. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through Ansible, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.

        If we are happy with the state of the Ansible it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: TeamCity. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with Jenkins, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with TeamCity). It also comes with all the common-handy plugins like Slack or Apache Maven integration.

        The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual Vault instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. TeamCity shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific Git branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).

        Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common Docker and CircleCI setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and LXC. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for Amazon EC2 (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.

        See more
        Clickhouse logo

        Clickhouse

        387
        517
        78
        A column-oriented database management system
        387
        517
        + 1
        78
        PROS OF CLICKHOUSE
        • 19
          Fast, very very fast
        • 11
          Good compression ratio
        • 6
          Horizontally scalable
        • 5
          Great CLI
        • 5
          Utilizes all CPU resources
        • 5
          RESTful
        • 4
          Buggy
        • 4
          Open-source
        • 4
          Great number of SQL functions
        • 3
          Server crashes its normal :(
        • 3
          Has no transactions
        • 2
          Flexible connection options
        • 2
          Highly available
        • 2
          ODBC
        • 2
          Flexible compression options
        • 1
          In IDEA data import via HTTP interface not working
        CONS OF CLICKHOUSE
        • 5
          Slow insert operations

        related Clickhouse posts