# SQL vs NoSQL

### Data schema

Với SQL, cấu trúc của table, column sẽ được define từ trước.  
Ưu điểm là giúp cho chúng ta biết trước được format, đồng thời là nhược điểm khi data liên tục cần phải thêm các extra column.

Ngược lại, so với NoSQL.

### Relation and data structure

Relation là một ưu điểm rất mạnh của relation database. Data trước khi lưu trữ sẽ được chuẩn hóa và chia vào nhiều table khác nhau. Việc update data sẽ chỉ cần diễn ra ở đúng 1 hoặc 1 vài table cần thiết.

Với non-relational database, phải chấp nhận duplicate data, và khi update data có thể phải thực hiện ở nhiều collection. Nhưng đổi lại tốc độ read data nhanh hơn so với relational database vì không cần JOIN.

### Scaling

Nếu relational database được phân tán lên nhiều server khác nhau thì việc join data gần như bất khả thi hoặc cần những kĩ thuật phức tạp hơn. Vậy nên relational database chỉ phù hợp với vertical scaling.

Với non-relational database, vì đã được loại bỏ relation nên việc horizontal scaling trở nên dễ dàng hơn. Mỗi record trong NoSQL đã chứa đủ thông tin cần thiết và không cần join nên việc phân tán data ra nhiều server không gặp bất lợi gì.

### Query speed

Phụ thuộc vào business của dự án: relational datanase thì strong ACID, phù hợp những bài toán yêu cầu sự chính xác cao như nghiệp vụ liên quan đến ngân hàng, giao dịch,... còn non-relational database thì ưu tiên về tốc độ, không cần chính xác ngay, phù hợp với những bài toán yêu cầu tốc độ hơn là sự chính xác, như web đọc báo, lưu những comment,...

Dung lượng của dữ liệu
