Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Định dạng dữ liệu - Data Formats

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Định dạng dữ liệu - Data Formats

    Định dạng dữ liệu (Data Formats) trong
    Network Automation

    1. Giới thiệu:
    - Định dạng dữ liệu là cách đơn giản để lưu trữ và trao đổi, giao tiếp dữ liệu trong một định dạng có cấu trúc được xây dựng sẵn. Một trong những định dạng quen thuộc và phổ biến là Hypertext Markup Language (HTML), là một chuẩn ngôn ngữ để mô tả cấu trúc các trang web.
    - Ngoài ra còn có một số định dạng dữ liệu thông dụng trong lĩnh vực network automation và lập trình:
    • JavaScript Object Notation (JSON)
    • eXtensible Markup Language (XML)
    • YAML Ain’t Markup Language (YAML)
    - Việc lựa chọn định dạng dữ liệu sẽ phụ thuộc vào úng dụng, công cụ hay script bạn sử dụng dùng định dạng nào. Một vài hệ thống có thể hỗ trợ nhiều hơn một định dạng dữ liệu, khi đó bạn có thể sử dụng định dạng dữ liệu mà mình thích.

    2. So sánh các định dạng dữ liệu:
    [IMG]file:///C:/Users/dangq/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png[/IMG]

    3. JSON
    • JSON là một định dạng dữ liệu có thể đọc được, được các ứng dụng sử dụng để lưu trữ, truyền và đọc dữ liệu. JSON là một định dạng rất phổ biến sử dụng trong các dịch vụ web và API để cung cấp dữ liệu công khai. Điều này là do nó dễ phân tích cú pháp và có thể sử dụng với hầu hết các ngôn ngữ lập trình hiện đại, bao gồm cả Python.
    • GigabitEthernet0/0/0 is up, line protocol is up (connected)
      Description: Wide Area Network
      Internet address is 172.16.0.2/24
      So sánh dữ liệu đầu ra của IOS với định dạng JSON, ta thấy rằng mỗi đối tượng (mỗi cặp key/value) là những mảnh khác nhau của dữ liệu về cổng, bao gồm tên, ghi chú, cổng có được kích hoạt.
    {
    "ietf-interfaces:interface": {
    "name": "GigabitEthernet0/0/0",
    "description": "Wide Area Network”,
    "enabled": true,
    "ietf-ip:ipv4": {
    "address": [
    {
    "ip": "172.16.0.2",
    "netmask": "255.255.255.0"
    }
    ]
    }
    }
    }
    • Đây là một số đặc điểm của JSON:
    • Nó sử dụng cấu trúc phân cấp và chứa các giá trị lồng vào nhau.
    • Nó sử dụng dấu ngoặc {} để giữ các đối tượng và dấu ngoặc vuông [] giữ mảng.
    • Dữ liệu của nó được viết dưới dạng cặp khóa / giá trị.
    • Với JSON, dữ liệu được gọi là một đối tượng, bao gồm một hoặc nhiều cặp khóa / giá trị được đặt trong dấu ngoặc {}. Cú pháp cho một đối tượng JSON bao gồm:
    • Các khóa phải là các chuỗi trong dấu ngoặc kép " ".
    • Các giá trị phải là kiểu dữ liệu JSON hợp lệ (chuỗi, số, mảng, Boolean, null hoặc đối tượng khác).
    • Các khóa và giá trị được phân tách bằng dấu hai chấm.
    • Nhiều cặp khóa / giá trị trong một đối tượng được phân tách bằng dấu phẩy.
    • Khoảng trắng không đáng kể.
    • Đôi khi một khóa có thể chứa nhiều hơn một giá trị. Điều này được gọi là một mảng. Một mảng trong JSON là một danh sách các giá trị được sắp xếp. Các đặc điểm của mảng trong JSON bao gồm:
    • Khóa theo sau là dấu hai chấm và danh sách các giá trị được đặt trong dấu ngoặc vuông [].
    • Mảng là một danh sách sắp xếp các giá trị.
    • Mảng có thể chứa nhiều loại giá trị bao gồm một chuỗi, số, Boolean, đối tượng hoặc một mảng khác bên trong mảng.
    • Mỗi giá trị trong mảng được phân tách bằng dấu phẩy.


    Ví dụ: danh sách các địa chỉ IPv4 có thể trông giống như đầu ra sau. Khóa (Key) ở trường hợp này là addresses. Mỗi item trong danh sách là một đối tượng riêng biệt, được phân tách bằng dấu ngoặc {}. Các đối tượng là hai cặp khóa / giá trị: một địa chỉ IPv4 “ip” và mặt nạ mạng con “netmask” được phân tách bằng dấu phẩy. Mảng các đối tượng trong danh sách cũng được phân tách bằng dấu phẩy sau dấu ngoặc đóng cho mỗi đối tượng.
    {
    "addresses": [
    {
    "ip": "172.16.0.2",
    "netmask": "255.255.255.0"
    },
    {
    "ip": "172.16.0.3",
    "netmask": "255.255.255.0"
    },
    {
    "ip": "172.16.0.4",
    "netmask": "255.255.255.0"
    }
    ]
    }




    4. YAML:
    - YAML là một loại định dạng dữ liệu có thể đọc được, được sử dụng bởi các ứng dụng để lưu trữ, truyền và đọc dữ liệu. Một số đặc điểm của YAML bao gồm:
    • Nó giống như JSON và được coi là dễ nhìn hơn JSON.
    • Nó có một định dạng tối giản làm cho nó dễ dàng để đọc và viết.
    • Nó sử dụng thụt đầu dòng để xác định cấu trúc của nó, mà không sử dụng dấu ngoặc hoặc dấu phẩy.
    • Đầu ra iOS trong JSON nằm ở bên trái. Dữ liệu tương tự ở định dạng YAML dưới đây. Nó dễ đọc hơn.
    • {
      "ietf-interfaces:interface": {
      "name": "GigabitEthernet2",
      "description": "Wide Area Network",
      "enabled": true,
      "ietf-ip:ipv4": {
      "address": [
      {
      "ip": "172.16.0.2",
      "netmask": "255.255.255.0"
      },
      {
      "ip": "172.16.0.3",
      "netmask": "255.255.255.0"
      },
      {
      "ip": "172.16.0.4",
      "netmask": "255.255.255.0"
      }
      ]
      }
      }
      }
      ietf-interfaces:interface:
      name:GigabitEthernet2
      description:WideAreaNetwork
      enabled:true
      ietf-ip:ipv4:
      address:
      - ip:172.16.0.2
      netmask:255.255.255.0
      - ip:172.16.0.3
      netmask:255.255.255.0
      - ip:172.16.0.4
      netmask:255.255.255.0
      Tương tự như JSON, một đối tượng YAML là một hoặc nhiều cặp giá trị khóa. Các cặp giá trị chính được phân tách bằng dấu hai chấm mà không sử dụng dấu ngoặc kép. Trong YAML, một dấu gạch nối được sử dụng để phân tách từng thành phần trong danh sách.

    5. XML:
    • XML là một loại định dạng dữ liệu có thể đọc được, được sử dụng để lưu trữ, truyền và đọc dữ liệu theo các ứng dụng. Một số đặc điểm của XML bao gồm:
    • Nó giống như HTML, là ngôn ngữ đánh dấu được tiêu chuẩn hóa để tạo các trang web và ứng dụng web.
    • Nó là tự mô tả. Nó kèm theo dữ liệu trong một bộ thẻ có liên quan: <tag> data </ ​​tag>
    • Không giống như HTML, XML không sử dụng các thẻ hoặc cấu trúc tài liệu được xác định trước.
    • Các đối tượng XML là một hoặc nhiều cặp khóa / giá trị, với thẻ bắt đầu được sử dụng làm tên của khóa: <key> value </ key>
    • Sự khác nhau giữa XML và HTML:
    XML và HTML được thiết kế với mục đích khác nhau:
    • XML được thiết kế để mang thông tin => tập trung vào thông tin là gì
    • HTML được thiết kế để hiển thị thông tin =>tập trung vào thông tin trông như thế nào
    • Đầu ra hiển thị cùng một dữ liệu cho GigabitEthernet2 được định dạng dưới dạng cấu trúc dữ liệu XML. Lưu ý cách các giá trị được đặt trong các thẻ đối tượng. Trong ví dụ này, mỗi cặp khóa / giá trị nằm trên một dòng riêng biệt và một số dòng được thụt vào. Điều này là không bắt buộc nhưng được thực hiện để dễ đọc. Danh sách sử dụng các phiên bản lặp lại của <tag> </ tag> cho từng thành phần trong danh sách. Các phần tử trong các trường hợp lặp lại này đại diện cho một hoặc nhiều cặp khóa / giá trị.
    <?xml version="1.0" encoding="UTF-8" ?>
    <ietf-interfaces:interface>
    <name>GigabitEthernet2</name>
    <description>Wide Area Network</description>
    <enabled>true</enabled>
    <ietf-ip:ipv4>
    <address>
    <ip>172.16.0.2</ip>
    <netmask>255.255.255.0</netmask>
    </address>
    <address>
    <ip>172.16.0.3</ip>
    <netmask>255.255.255.0</netmask>
    </address>
    <address>
    <ip>172.16.0.4</ip>
    <netmask>255.255.255.0</netmask>
    </address>
    </ietf-ip:ipv4>
    </ietf-interfaces:interface>

    Đặng Quang Minh, CCIEx2#11897 (Enterprise Infrastructure, Wireless), DEVNET, CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X