分類: 技術-資料庫

資料庫技術,包含 Kafka、PostgreSQL、SOLR、Elasticsearch 等

  • Kafka 實務坑筆記(三):Partition Key 設定不當導致重複處理

    問題現象

    用戶下訂單後要出貨,但系統竟然發動了兩次一模一樣的取號 Job,導致:

    (閱讀全文…)

  • Kafka 實務坑筆記(二):Consumer 被踢出 Group 的詭異現象

    問題現象

    某天早上塞入大量回滾的蝦皮 Queue,卻發現一個詭異現象

    (閱讀全文…)

  • Kafka 實務坑筆記(一):回滾資料導致 Queue 爆炸的慘痛教訓

    問題背景

    在電商系統中,我們經常需要回滾訂單資料讓用戶取得過去的訂單作為「鋪底」。原本的做法是每隔 5 分鐘往前打一次訂單 API,看似合理的設計卻埋下了災難的種子。

    (閱讀全文…)

  • 分散式資料庫訊息

    重要觀念

    分散式資料庫鎖

    https://www.gushiciku.cn/pl/gkKm/zh-tw

    (閱讀全文…)

  • schemaSpy

    結論

    這套工具可以掃描資料庫來產資料庫文件,But前提是你的DB 表欄位的關聯要做好,其次他產出後的文件並沒有BI需要後續整理,但是以第一步來說,沒問題

    (閱讀全文…)

  • Elasticsearch 研究筆記:從 Solr Edismax 到 NEST 實戰

    研究目標

    1. Elastic 能否做到 Solr 的 Edismax
    2. 達到的情境:根據 List 的算法跟 String 算法是否一致
    3. 權重的分布情況

    Docker 單節點運行指令

    docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" -v es_data:/usr/share/elasticsearch/data elasticsearch:8.17.0

    Docker 集群配置 (docker-compose)

    version: '3'
    services:
      elasticsearch-node1:
        image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
        environment:
          - discovery.type=zen-disco
          - discovery.seed_hosts=elasticsearch-node1,elasticsearch-node2,elasticsearch-node3
          - cluster.initial_master_nodes=elasticsearch-node1,elasticsearch-node2,elasticsearch-node3
          - xpack.security.enabled=false
        volumes:
          - es_data1:/usr/share/elasticsearch/data
        networks:
          - elasticsearch-net
        ports:
          - "9200:9200"
          - "9300:9300"
    
      elasticsearch-node2:
        image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
        environment:
          - discovery.type=zen-disco
          - discovery.seed_hosts=elasticsearch-node1,elasticsearch-node2,elasticsearch-node3
          - cluster.initial_master_nodes=elasticsearch-node1,elasticsearch-node2,elasticsearch-node3
          - xpack.security.enabled=false
        volumes:
          - es_data2:/usr/share/elasticsearch/data
        networks:
          - elasticsearch-net
        ports:
          - "9201:9200"
          - "9301:9300"
    
      elasticsearch-node3:
        image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
        environment:
          - discovery.type=zen-disco
          - discovery.seed_hosts=elasticsearch-node1,elasticsearch-node2,elasticsearch-node3
          - cluster.initial_master_nodes=elasticsearch-node1,elasticsearch-node2,elasticsearch-node3
          - xpack.security.enabled=false
        volumes:
          - es_data3:/usr/share/elasticsearch/data
        networks:
          - elasticsearch-net
        ports:
          - "9202:9200"
          - "9302:9300"
    
    networks:
      elasticsearch-net:
        driver: bridge
    
    volumes:
      es_data1:
      es_data2:
      es_data3:

    啟動集群:

    (閱讀全文…)

  • DB備份還原

    pgsql 備份

    全備份全回朔

    資料備份

    “`bash~
    sudo mkdir -p /opt/backup/idempiere
    sudo chown postgres:postgres /opt/backup/idempiere
    sudo nano /opt/backup/backup_idempiere.sh
    sudo chmod +x /opt/backup/backup_idempiere.sh
    sudo chown postgres:postgres /opt/backup/backup_idempiere.sh

    (閱讀全文…)

  • 資料庫研習文件

    重要觀念

    • Page
    • 資料表的欄位長度
    • Delete的語法
    • IO的速度
    • filegroup跟相對應的disk
    • index的實作是怎麼樣的
    • 語法中的各種lock使用機制
    • 資料表的lock自動跳級
    • 執行計畫

    page

    從 sys.allocation_units 這個表裡面可以找到每個表的page狀態,有分total Page、used page、 data page
    通常 data< used < total

    (閱讀全文…)

  • kafka 綜合筆記

    名詞介紹

    1. Producer:訊息生產者
    2. Broker:傳遞訊息的中介者
    3. Consumer:訊息消費者
    4. Topic:訊息的主題
    5. Partition:主題內的分區
    6. ComsumerGroup:消費者群組

    Producer

    只要是發送訊息出去的都是這一個腳色,定位上是往kafka push queue的就是。

    (閱讀全文…)