PostgreSQL與Elasticsearch和PGSync的實時資料整合 -Tolu
PGSync是一個變更資料捕獲工具,用於將資料從Postgres轉移到Elasticsearch。它允許你保留Postgres作為你的真實來源,並在Elasticsearch中公開結構化的非規範化文件。
這對於構建後端服務以驅動文字搜尋應用或構建實時儀表盤應用非常有用。
對巢狀實體的改變會傳播到Elasticsearch。
PGSync的高階查詢生成器會根據你的模式生成SQL查詢。
只需用JSON描述你的模式,PGSync就會持續捕捉你的資料變化,並將其載入到Elasticsearch中。
PGSync提供了一個自我管理的變化資料捕獲解決方案。
原有問題
在高層次上,你在Postgres資料庫中擁有資料,你想在Elasticsearch中展示它。這意味著你的資料的每一個變化都需要被複制到Elasticsearch中。
起初,這似乎很容易,然後就不容易了。只需新增一些程式碼,在更新資料庫後將資料複製到Elasticsearch,或者在你的應用層面上執行所謂的雙重寫入。編寫跨越多個表和涉及多個關係的SQL查詢可能不是件容易的事。檢測巢狀檔案中的變化也可能相當困難。
當然,如果你的資料從未發生過變化,那麼你可以直接拍下時間快照,然後將其載入到Elasticsearch中。請記住,你不應該真的把你的主要資料儲存在Elasticsearch中。
Elasticsearch更適合作為一個次要的非規範化搜尋引擎,與傳統的規範化資料儲存一起使用。
其中一個挑戰是在合理的時間範圍內將資料從真實源中取出並放入二級儲存。
現有的工具,如Apaches的Kafka、Amazons的Kinesis或Elastics的Logstash需要相當多的工程和專業知識。
如何解決問題
PGSync利用PostgreSQL 9.4中引入的Postgres的邏輯解碼功能來捕獲連續的變化事件流。
PGSync的查詢生成器能夠根據你的模式動態地建立高階關係查詢。
只需在Elasticsearch中定義一個描述資料結構的模式(JSON),引導資料庫並啟動PGSync守護程式。
它同時執行一個輪詢和一個事件驅動的模型,以捕獲到日期的變化,並通知在某個時間點發生的變化。最初的同步會輪詢資料庫自上一次迭代以來的變化,此後對資料庫的變化恢復到事件通知(基於觸發器並由pg-notify處理)。
不需要用諸如 "updated_at"、"timestamp "或 "status "等欄位來汙染你的資料庫,以檢測和跟蹤行級變化。
PGSync降低了大多數應用程式堆疊的複雜性。
- Postgres是你的讀/寫事實來源,而Elasticsearch是你的只讀搜尋層。
- 你有不斷變化的資料。
- 你在現有的關係型資料庫(如Postgres)中擁有資料,你需要一個輔助的NoSQL資料庫,如Elasticsearch,用於基於文字或自動完成查詢。
- 你想避免其他工具所規定的開發開銷和複雜性。
安裝需要:
Prerequisites: Python 3.6+, Redis 3.1.0+, Elasticsearch 5.0+, PostgreSQL 9.4+.
$ pip install pgsync $ pgsync --config <absolute path to JSON schema config> --daemon |
原始碼:Github repository.
相關文章
- 使用Storm、Kafka和ElasticSearch處理實時資料 -javacodegeeksORMKafkaElasticsearchJava
- spark與elasticsearch整合SparkElasticsearch
- 如何高效實現 MySQL 與 elasticsearch 的資料同步MySqlElasticsearch
- Elasticsearch 與 Kafka 整合剖析ElasticsearchKafka
- RuoYi-Cloud整合PostgreSQL資料庫CloudSQL資料庫
- Greenplum,PostgreSQL資料實時訂閱的幾種方式SQL
- 《Elasticsearch技術解析與實戰》Chapter 1.4 Spring Boot整合ElasticsearchElasticsearchAPTSpring Boot
- PostgreSQL業務資料質量實時監控實踐SQL
- ElasticSearch與Spring Boot整合ElasticsearchSpring Boot
- ETL資料整合丨PostgreSQL資料遷移至Hive資料庫SQLHive資料庫
- 實時資料庫與時序資料庫資料庫
- Hive 與 ElasticSearch 的資料互動HiveElasticsearch
- 資料實時傳輸平臺(CDC)與低程式碼平臺(APAAS)資料整合
- 向量資料庫與LLM的整合:實踐指南資料庫
- Oracle實時資料整合工具簡介SBOracle
- Flinkx實時和離線同步Postgresql資料到KafkaSQLKafka
- ElasticSearch與SpringBoot的整合與JPA方法的使用ElasticsearchSpring Boot
- PostgreSQL技術週刊第12期:PostgreSQL時空資料排程實踐SQL
- PostgreSQL:資料庫的建立與刪除SQL資料庫
- Spring Boot 整合 Elasticsearch 實戰Spring BootElasticsearch
- EMQX Enterprise 5.5 釋出:新增 Elasticsearch 資料整合MQElasticsearch
- 同時支援真實資料與 mock 資料的 httpmock 工具MockHTTP
- Elasticsearch和向量資料庫的快速入門Elasticsearch資料庫
- Elasticsearch資料庫 | Elasticsearch-7.5.0應用搭建實戰Elasticsearch資料庫
- kafka和websocket實時資料推送KafkaWeb
- PB級資料實時查詢,滴滴Elasticsearch多叢集架構實踐Elasticsearch架構
- 資料安全與PostgreSQL:保護策略SQL
- 一種Mysql和Mongodb資料同步到Elasticsearch的實現辦法和系統MySqlMongoDBElasticsearch
- 資料科學的整合與細分資料科學
- PostgreSql資料庫的備份和恢復SQL資料庫
- SpringBoot整合ElasticSearch實現多版本的相容Spring BootElasticsearch
- Elasticsearch資料庫 | Elasticsearch-7.5.0應用基礎實戰Elasticsearch資料庫
- 《Elasticsearch技術解析與實戰》Chapter 1.1:Elasticsearch入門和倒排索引ElasticsearchAPT索引
- ElasticSearch-IK分詞器和整合使用Elasticsearch分詞
- MySQL和PostgreSQL資料庫安全配置MySql資料庫
- postgresql 資料匯入和匯出SQL
- 構建實時資料整合平臺時,在技術選型上的考量點
- openGauss資料與PostgreSQL的差異對比SQL