Yuanchieh's Blog
生命是長期而持續的累積
All Posts
About
Categories
資料庫
25
Apr 2022
【MySQL】Lock 與 Index 關係和 Deadlock 分析
整理 MySQL 的 Lock 與 Index 關係,以及 Deadlock debug 過程
02
Apr 2022
【DDIA】03 - 資料庫儲存原理研究
整理 DDIA 第三章:關於資料庫儲存原理
14
Nov 2021
《Effective SQL》讀後分享
《Effective SQL》分享 61 個優化 SQL Database 相關的技巧,有些關於資料表的設計與複雜的關聯式查詢有很多不錯的點子,是本很實用的工具書
10
Oct 2021
MySQL Replication 與 RDS
與同事某一天看到 RDS MySQL read replica 盡然可以 writable,覺得這也太神奇了,花了點時間理解 MySQL Replication,並實驗怎樣的更改會導致 replication 中斷
02
Jul 2021
AWS Aurora 架構研究以及與自駕 MySQL 的差異
AWS Aurora 是 AWS 託管的兼容於 MySQL/PostgreSQL 的雲端關聯式資料庫,我一直誤以為他就是個託管服務與管理跨區域 Replica,但為了因應雲端與效能改善,底層儲存架構與自駕的 MySQL 截然不同
26
Dec 2020
MySQL Deadlock 問題排查與處理
週末寫點簡單的 SQL 遇到了 Deadlock,才發現 foreign key 會有額外的 lock 效果導致 Deadlock,重新翻閱 MySQL 文件並分享排查過程
03
Nov 2020
Raft 演算法介紹與《In Search of an Understandable Consensus Algorithm》摘要
Raft 演算法是一種 Consensus 演算法,提供分散式系統中可容錯的「強一致性」資料同步的方式,意圖取代複雜難懂的 Paxos,主要由三個機制 Leader / Log Replication / Safety 三塊組成
28
Oct 2020
Gossip Protocol 介紹 (下) - 《Efficient Reconciliation and Flow Control for Anti-Entropy Protocols》論文摘要
延續上篇的研究,接著閱讀了《Efficient Reconciliation and Flow Control for Anti-Entropy Protocols》論文理解 Gossip Protocol 的原理以及應用
26
Oct 2020
Gossip Protocol 介紹 (上) - 從 Cassandra 內部實作認識 Gossip Protocol 的使用
在學習 Consul 與 Redis Cluster 過程中,都提及使用 Gossip Protocol 同步集群中節點的狀態,究竟機器之間怎麼談茶水間八卦實在令人好奇,透過 Cassandra 內部實作理解 Gossip 的原理
19
Oct 2020
Redis Cluster 介紹
參考文件摘要 Redis Cluster 使用與架構
18
Oct 2020
使用 Redis 當作 API Rate limit 的三種方法
API Service 在操作某些行為時需要耗費資源,如果 Client 不如預期的大量呼叫,會造成服務受到嚴重的影響,所以需要針對用戶做 API 呼叫次數的限制;Redis 作為中心化的高效能記憶體資料庫,很適合拿來當作 Rate Limit 的儲存方案,以下分享三種常見的做法 static time window / sliding time window 與 token bucket
15
Jul 2020
Elasticsearch 教學 - API 操作
主要針對 Elasticsearch 的實作與 API 操作
08
Jul 2020
Elasticsearch 系統介紹與評估
Elasticsearch 系統架構分析
06
Feb 2020
MongoDB 批次處理大量數據
在大量查詢時必須小心使用語法,避免 MongoDB 反應不來
14
Jan 2020
Redis Lock (Redlock) 分散式 lock 原理分析與實作
Redlock 是一種 Redis 作者 antirez 基於 Redis 設計的分散式 lock 機制
14
Oct 2018
MongoDB Isolation 與 Transaction
在 MongoDB中,其 Isolation 與 SQL標準定義的 Isolation Level不同,畢竟NoSQL注重於海量讀寫 、集群式的應用場景,自然所面對的問題也就差異很多,但也因此在面臨 Concurrency 時的讀寫保證問題,以下是閱讀官方文件並整理的結果。
08
Sep 2018
MongoDB Shard Cluster 架設
在大量資料需要儲存下,可以將 MongoDB做 Sharding 與 Replica Set 設置,增加DB的吞吐量與可用性。
23
Aug 2018
PostgreSQL json 操作
Postgresql 可以用欄位 jsonb型別儲存 json格式的資料,並提供不少內建的函式可以協助查詢,以下稍微整理一些常用的情景。
30
Jul 2018
MySQL Explain分析與Index設定查詢優化
資料庫日積月累資料量逐步攀升,MySQL在一般查詢是透過全表搜尋,所以大量的資料會導致查詢等方式越來越慢
21
Jun 2018
MySQL 關於地理位置的儲存與運算
最近突然好奇如何做LBS服務,最基本的應用場景就是找出某經緯度位置內方圓距離多少內的所有資料,所以就來研究一下MySQL如何處理地理位置。
28
May 2018
資料庫 Isolation level 與實際應用情境處理
Transaction 交易機制,可以讓單一或多筆操作聚合為單一的原子性操作,一次性成功寫入或失敗回滾,避免資料庫出現資料不一致的狀況。
24
Apr 2018
MySQL FOREIGN KEY Constraints 整理
整理閱讀MySQL v5.7的FOREIGN KEY Constraints文件,並針對細節在DB Fiddle加上範例。
19
Apr 2018
[技術筆記] Designing Data-Intensive Applications 下
《Designing Data-Intensive Applications》是我目前看過應用程式開發最推薦的一本書,隨著網路時代的發展,資料量越來越龐大,處理資料成了應用程式擴展的瓶頸。 這本書從資料庫本身、資料庫常見問題、跨機器的資料同步問題等,他不是介紹單一的資料庫如何使用,而是更仔細的介紹每個高大上又令人困惑的 Buzzword,對儲存資料的設計有更深的理解。
28
Mar 2018
[技術筆記] Designing Data-Intensive Applications 上
《Designing Data-Intensive Applications》是我目前看過應用程式開發最推薦的一本書,隨著網路時代的發展,資料量越來越龐大,處理資料成了應用程式擴展的瓶頸。 這本書從資料庫本身、資料庫常見問題、跨機器的資料同步問題等,他不是介紹單一的資料庫如何使用,而是更仔細的介紹每個高大上又令人困惑的 Buzzword,對儲存資料的設計有更深的理解。