資料模型(Data Modeling)
設計 => ER models, 正規化, Primary Key, 時區, Index 一致性 => ACID, Race condition, isolation level Backup Migration
- Query
- SQL queries don't start with SELECT
- Most memorable graphic Figure 4-3. SELECT phases from @Apress "The Definitive Guide to SQLite"
- SQL Lesson 12: Order of execution of a Query
- [MySQL / MariaDB] 優化查詢語句OFFSET越大時間越久的問題
- 《Effective SQL》讀後分享 | Yuanchieh's Blog
- How to Calculate the Difference Between Two Rows in SQL
- :star:The Best Medium-Hard Data Analyst SQL Interview Questions
- mysql - Select from same table as an Insert or Update - Stack Overflow
- Mysql inconsistent number of rows count(*) vs table.table_rows in information_schema - Stack Overflow
- MySQL :: MySQL 8.0 Reference Manual :: 15.23 InnoDB Restrictions and Limitations
-
SHOW TABLE STATUS does not provide accurate statistics for InnoDB tables except for the physical size reserved by the table. The row count is only a rough estimate used in SQL optimization.
-
InnoDB does not keep an internal count of rows in a table because concurrent transactions might “see” different numbers of rows at the same time. Consequently, SELECT COUNT(*) statements only count rows visible to the current transaction.
- MySQL :: MySQL 8.0 Reference Manual :: 12.20.1 Aggregate Function Descriptions
-
- MySQL :: MySQL 8.0 Reference Manual :: 15.23 InnoDB Restrictions and Limitations
- Is offset pagination dead? Why cursor pagination is taking over | by Megan C. | UX Collective
- Query(Advence)
- ACID
- :star:資料庫層的難題 - 單機『 故障 』一致性難題
- 天災人禍(故障與併發)的生存之道
- ADI => C
- :star:select...for update再insert造成deadlock的陷阱
- 如何理解資料庫中一致性的概念
- Transaction 筆記
- 資料庫高併發的第一步 — 事務隔離
- Lock
- :star:資料庫層的難題 - 單機『 故障 』一致性難題
- Design(Practice)
- :star:Modeling Game Player Data with Amazon DynamoDB
- :star:Database Design in Practical Examples
- :star:Database schema templates
- :star:Redis Best Practices – Introduction and patterns
- Database Design of a Restaurant Management System from user story to relational Model
- Entity Relationship Modeling Examples
- Design(Basic)
- :star:Database Structure and Design Tutorial
- 11 important database designing rules which I follow
- Get started with SQL: Plan and design a database
- A Quick-Start Tutorial on Relational Database Design
- Data Modeling 101
- Relational Database Schema Design Overview
- Pros and Cons of Database Normalization
- The Process of Database Refactoring: Strategies for Improving Database Quality
- Introduction | The Analytics Setup Guidebook
- :star:【產品】使用 ER 圖編寫清晰的軟體規格|someone.tw | blog.someone.tw
- Payment Service(一): 付款流程 - Hjoru's sharing - Medium
- 正規化
- :star:淺談資料庫正規化
- 例子舉得很棒!
- :star:Good RDB Design with the Concept of Normal Forms
- 誰是老大, 拆團
- 30-17之MongoDB的設計---正規與反正規化的戰爭
- :star:淺談資料庫正規化
- MySQL
- Guide
- Design(Advance)
- 恰如其分的 MySQL 設計技巧 - Modern Web 2016
- 資料庫索引數據結構及主鍵設計
- Don't Do This - PostgreSQL wiki
- fulltext search
- partition
- statistics
- bit mask relational database
- sql - Storing Combinatorial Values in a MySQL database - Bit masking, foreign keys, junction tables, or what? - Stack Overflow
- patterns and practices - Advantages and disadvantages of using bit masks in database - Software Engineering Stack Exchange
- sql - Any disadvantages to bit flags in database columns? - Stack Overflow
- sql - Optimize mysql query to use index on a Bitwise where clause - Stack Overflow
- sql - MySQL doesn't use indexes when query over BIT field using bitwise functions - Stack Overflow
- how to store tags in mysql
- performance - Storing multiple tags on analytics database - Database Administrators Stack Exchange
- database design - SET or VARCHAR for list of tags in a MySQL photos table? - Database Administrators Stack Exchange
- mysql - SELECT items that has one or more specific TAGS - Database Administrators Stack Exchange
- json field
- others
- Migration
- 不停機 migration 避免鎖表的幾種操作
- Evolutionary Database Design
- Breaking Free From the ORM: Decoupling Database Migrations
- Decoupling database migrations from server startup: why and how
- 資料庫也有版本控制 :: 2022 iThome 鐵人賽
- [MySQL] 資料表結構遷移的好幫手 pt-online-schema-change | 從入門到放棄
- GitHub 發展出來的 ALTER TABLE 方式 – Gea-Suan Lin's BLOG
- Eventbrite 的 MySQL 升級計畫 – Gea-Suan Lin's BLOG
- PostgreSQL 上對應 pt-online-schema-change 的工具 pg-osc – Gea-Suan Lin's BLOG
- sql - ALTER TABLE without locking the table? - Stack Overflow
- Squashing Migrations
- Error
- Microsoft 資料架構指南
- Race Condition
- Real world
- github-race condition demo
- 複習資料庫的 Isolation Level 與圖解五個常見的 Race Conditions
- 淺談MySQL隔離層級為RR(可重復讀)時不能避免Phantom Read(幻讀)
- 對於 MySQL Repeatable Read Isolation 常見的三個誤解
- 資料庫交易的 Isolation
- MySQL Deadlock 問題排查與處理
- All you need to know about Database transaction concurrency control — locks, Isolation level, MVCC | by LORY | Sep, 2023 | Medium
- 好像要鎖一下ㄟ(悲觀鎖、樂觀鎖) - HackMD
- 使用Redis來進行分散式鎖 - HackMD
- 安全
- 交換
- 工具
- High Availability
- 其他
- Tachunn Publication - 17LIVE Next-Gen Database選型分析. 宏觀上來看,各時期的資料庫並沒有強弱之分,都是為了滿足當前時代需求而演進的型態,… | by Pink Yu | 17LIVE Tech Insight | Medium
- How to Efficiently Choose the Right Database for Your Applications
- Choosing between a relational database and a NoSQL database
- Relational Database Vs NoSQL: A Comprehensive Analysis
- RDBMS收費課程用的教材 - Triton Ho
- JSON in PostgreSQL,建議跟不建議 - Rubin
- https://www.youtube.com/watch?v=l5Z_cE6jGxA
- 該用 MySQL 或 MongoDB?選擇資料庫前你該了解的事
- mysql add foreign key constraint referencing a view
- Database development mistakes made by application developers - Stack Overflow
- 淺入淺出 MySQL Ep2 : 我的 SQL 怎麼執行我的查詢 | by vic | Medium
- MySQL Explain分析與Index設定查詢優化 | Yuanchieh's Blog
- MySQL有什么推荐的学习书籍? - 知乎
- 如何從關聯式資料庫轉型
- 使用 Docker Compose 建立啟用 X-Pack 的 Elasticsearch 與 Kibana - Yowko's Notes
- A 5 years+ tech lead said they shard a database to scale but then he failed to answer this question | by LORY | Medium
- Tachunn Publication - Tachunn Publication - Tachunn Publication - DDIA 逐章精读
- 當代資料工程與資料分析 :: 2023 iThome 鐵人賽
- 能夠做到平行運算的 ClickHouse Distributed Table Engine - AndyWu's Notes
- gitlab
設計
需求 - 商業 - 資料量級 - 安全
收集與梳理資訊 - 現場使用的人 - 現有表單(invoices, timesheets, surveys) - 現有資料系統
what kinds of data the database will include where that data comes from how it will be used
ERD Primary Key Cardinality
Index B+ Tree => 只有最下面的節點有資料,其它上面的節點只存索引
Clustered Index => 在innodb中, 它就是這份資料實際上儲存的結構(B+ Tree)
Secondary Index => 可以自行建立的索引, 最基本使用 secondary Index 的步驟, 至 secondary Index 尋找 PK, 再至 clustered Index 取得完整資料
看看候選欄位的基數大小, 基數就是指這個欄位的值的可能性
一般索引(覆蓋索引) 連合索引 : 常常需要與其它欄位一起查詢,適合建立。但是要注意先後順序,基本最常查詢的與基數高的適合放最左邊 前綴索引 : 這種大致上用在如果要針對某段文字進行前綴搜尋的情況Keyword search
- 用mysql fulltext search建立簡易搜尋引擎
- Pattern Matching Queries vs. Full-Text Indexes
- What is Full Text Search vs LIKE
- Performance analysis of MySQL's FULLTEXT indexes and LIKE queries for full text search
Redis
- Redis Fundamental
- Redis Developer
- Redis Best Practices
- 使用 Redis 當作 API Rate limit 的三種方法
- How to build a Rate Limiter using Redis
- Redis Lock (Redlock) 分散式 lock 原理分析與實作
- Finding non-expiring keys in Redis - Stack Overflow
- Redis Explained
- Redis 與作者 antirez 的故事 | 軟體考古學家
ElasticSearch
Hadoop ecosystem
- Hadoop ecosystem 工具簡介, 安裝教學與各種情境使用 :: 2018 iT 邦幫忙鐵人賽
- Day 15-HBase SQL工具介紹 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
- 快速入門:Apache HBase 與 Apache Phoenix - Azure HDInsight | Microsoft Learn
- 6大主流開源SQL引擎總結,遙遙領先的是誰? | 帆軟軟體