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
- 如何高效實現 MySQL 與 elasticsearch 的資料同步MySqlElasticsearch
- 《Elasticsearch技術解析與實戰》Chapter 1.4 Spring Boot整合ElasticsearchElasticsearchAPTSpring Boot
- ElasticSearch與Spring Boot整合ElasticsearchSpring Boot
- RuoYi-Cloud整合PostgreSQL資料庫CloudSQL資料庫
- ElasticSearch與SpringBoot的整合與JPA方法的使用ElasticsearchSpring Boot
- ETL資料整合丨PostgreSQL資料遷移至Hive資料庫SQLHive資料庫
- Flinkx實時和離線同步Postgresql資料到KafkaSQLKafka
- Hive 與 ElasticSearch 的資料互動HiveElasticsearch
- 向量資料庫與LLM的整合:實踐指南資料庫
- 實時資料庫與時序資料庫資料庫
- 資料實時傳輸平臺(CDC)與低程式碼平臺(APAAS)資料整合
- Oracle實時資料整合工具簡介SBOracle
- EMQX Enterprise 5.5 釋出:新增 Elasticsearch 資料整合MQElasticsearch
- Spring Boot 整合 Elasticsearch 實戰Spring BootElasticsearch
- PostgreSQL:資料庫的建立與刪除SQL資料庫
- PostgreSQL技術週刊第12期:PostgreSQL時空資料排程實踐SQL
- SpringBoot整合ElasticSearch實現多版本的相容Spring BootElasticsearch
- 同時支援真實資料與 mock 資料的 httpmock 工具MockHTTP
- 資料庫與Redgate SQL Toolbelt和Azure DevOps的持續整合資料庫SQLdev
- Elasticsearch和向量資料庫的快速入門Elasticsearch資料庫
- openGauss資料與PostgreSQL的差異對比SQL
- 一種Mysql和Mongodb資料同步到Elasticsearch的實現辦法和系統MySqlMongoDBElasticsearch
- kafka和websocket實時資料推送KafkaWeb
- PostgreSql資料庫的備份和恢復SQL資料庫
- Elasticsearch資料庫 | Elasticsearch-7.5.0應用搭建實戰Elasticsearch資料庫
- 資料安全與PostgreSQL:保護策略SQL
- PB級資料實時查詢,滴滴Elasticsearch多叢集架構實踐Elasticsearch架構
- ElasticSearch8 - SpringBoot整合ElasticSearchElasticsearchSpring Boot
- 打造實時資料整合平臺——DataPipeline基於Kafka Connect的應用實踐APIKafka
- MySQL和PostgreSQL資料庫安全配置MySql資料庫
- springmvc整合elasticsearchSpringMVCElasticsearch
- SpringBoot 整合 elasticsearchSpring BootElasticsearch
- SpringBoot整合elasticsearchSpring BootElasticsearch
- ElasticSearch 整合 SpringBootElasticsearchSpring Boot
- 金蝶雲星辰與旺店通的庫存資料整合實現
- 下一個發展潮流:實現ERP與MES的資料整合
- 構建實時資料整合平臺時,在技術選型上的考量點