Nếu bạn đang tìm hiểu về YAML, trước hết hãy xem YAML là gì. Trong bài viết này, mình sẽ phân tích và trình bày để bạn hiểu dễ dàng hơn về những nhược điểm cũng như ưu điểm của định dạng YAML so với XML và JSON.
YAML là gì?
YAML là ngôn ngữ tuần tự hóa dữ liệu (Data Serialization Language), giúp con người dễ đọc hiểu, tương tự như JSON và XML. Nó sử dụng định dạng thụt đầu dòng (giống python) để xác định cấu trúc.
Trong ví dụ dưới đây, bạn có thể thấy có những chỗ bị thụt sâu vào, được dùng để xác định các khối dữ liệu trong YAML.
---
receipt: Buffet
date: 2019-05-06
customer:
first_name: Vu
family_name: Van
items:
- part_no: A4786
descrip: Water Bucket
price: 5.8
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
size: 8
price: 457.4
quantity: 8
Nó có định dạng thụt đầu dòng tương tự như trong python. Nếu bạn đã từng sử dụng ngôn ngữ lập trình Python, chắc chắn bạn sẽ nhận biết được ý nghĩa sự thụt đầu dòng như thế nào. Chúng dùng một lượng khoảng trống nhất định để định nghĩa một khối cấu trúc (lượng khoảng trống nhất định có thể là 4 phím cách hay 1 phím tab,…).
Có rất nhiều sự lựa chọn khác nhau thay thế cho YAML như ngôn ngữ tuần tự hóa. Một trong những sự thay thế đó là JSON và XML. Và hai định dạng này là những loại được sử dụng phổ biến và rộng rãi nhất.
Sử dụng YAML và ngôn ngữ tuần tự hóa dữ liệu khác để làm gì?
- Để nhập và xuất dữ liệu tới và từ một máy chủ.
- Cấu hình ứng dụng với một file duy nhất. Những file này chỉ định tham số cấu hình và những giá trị tương ứng của nó.
- Truyền dữ liệu giữa hai thành phần khác nhau trong một ứng dụng.
- Lưu trữ dữ liệu trung gian
Có những lợi ích nhất định của việc sử dụng YAML so với XML và JSON. Và đó chính là lý do, ngày nay có rất nhiều các lập trình viên đang sử dụng YAML so với XML và JSON.
Các ưu điểm của YAML
- Trong YAML, không có dấu phân cách được sử dụng. Vì vậy file sẽ nhẹ hơn rất nhiều so với JSON và XML.
- YAML không sử dụng các dấu phân cách cũng làm cho việc đọc file trở nên dễ dàng hơn. (Mình không chắc chắn nếu bạn đồng ý với điểm này. Bởi vì có rất nhiều chuyên gia máy tính thấy việc đọc dữ liệu từ dấu phân cách sẽ dễ dàng hơn)
- YAML làm cho dữ liệu trở nên dễ hiểu hơn. Và nó cũng cực kỳ hữu ích trong trường hợp được sử dụng làm file cấu hình.
- YAML là superset của JSON. Bất cứ mã JSON hợp lệ nào, nó cũng có thể được biên dịch thành YAML. Việc lựa chọn YAML thay vì JSON cho dự án của bạn, sẽ có được một số lợi ích nhất định. Bạn có thể phân tích cả hai đoạn mã YAML và JSON trong một trình phân tích duy nhất.
Tại sao nhiều lập trình viên không sử dụng YAML?
YAML không được phổ biến như nó được mong đợi. Mỗi tiêu chuẩn tuần tự hóa có những bước xử lý dễ dàng và lợi ích riêng đối cho từng ngôn ngữ lập trình khác nhau.
Có một số nhược điểm dẫn đến lý do này, chúng ta sẽ cùng xem phần nhược điểm của nó.
Các nhược điểm của YAML
- Có quá nhiều các ứng dụng được xây dựng sử dụng XML hoặc JSON, điều này gây khó khăn cho các lập trình viên khi muốn thay thế nó sang YAML. Chẳng hạn, Mình đang phát triển một plugin cho một dự án đang được triển khai sử dụng XML. Mình sẽ muốn dùng XML trong plugin. Vì nó sẽ rất dễ dàng để mình gộp plugin vào dự án đang tồn tại.
- Khi nói về mức độ phổ biến, XML thường có hệ sinh thái lớn hơn nhiều so với YAML.
- JSON tồn tại từ năm 2000 tới giờ và nó vẫn được nhiều người sử dụng hơn so với YAML. Vì vậy, khi muốn tìm kiếm một sự hỗ trợ về định dạng dữ liệu, ta sẽ tìm thấy JSON dễ dàng hơn nhiều so với YAML.
- Có một số trở ngại gây khó khăn trong quá trình viết code YAML. Thậm chí khi bạn không khớp một dấu thụt lề đầu dòng, code của bạn sẽ không hoạt động được.
- Có rất nhiều cách khác nhau để biểu diễn và phân cấp dữ liệu trong YAML. Vì vậy nó khá phức tạp trong quá trình xử lý. Như vậy, JSON và XML sẽ có hiệu suất tốt hơn so với YAML.
Kết luận
YAML là tiêu chuẩn tuần tự hóa dữ liệu sử dụng dấu thụt lề đầu dòng. Có rất nhiều các ưu điểm mà YAML đem đến. Bên cạnh đó, cũng có nhiều các nhược điểm của YAML. Nhiều nhà phát triển cảm thấy khó khăn khi sử dụng phong cách thụt lề đầu dòng của YAML.
Nếu bạn đang phát triển một dự án mới từ đầu, bạn có thể nghĩ về việc lựa chọn bất kỳ ngôn ngữ tuần tự hóa nào. Nó sẽ phụ thuộc và các trường hợp phát triển trong giai đoạn phát triển cũng như sở thích của bạn.