[Node] MySQL 8 X DevAPI getting start

Overview

JSON

MySQL 從 5.7 起原生支援 JSON 欄位, 並開發了 JSON 查詢的完整函式 (WL#7909). 讓開發者定義 JSON 格式欄位, 除了存入 JSON 資料外, 並可在 SQL 語法中針對 JSON 資料進行篩選搜尋等. JSON 格式的原生支援, 讓開發者不再需要利用 Text 欄位存放 JSON 資料, 比每次存取都必須轉換 JSON 及 Text 格式來得方便. 也因是原生支援, 可以透過官方函式, 進一步對於 JSON 內容進行搜尋比對.

但 JSON 欄位的支援, 只是讓開發者可以有官方支援來存取 JSON 資料, 操作語言和程式思維還是 SQL, 和 NoSQL 資料庫的文件操作仍相當不同.

X DevAPI

MySQL 在 5.7.12 透過 X Plugin 引入了新的通訊協定, 增加了新的客戶端 API - X DevAPI. X DevAPI 提供文件層級的 CRUD 操作, 開發者可以在 MySQL 上完成和 mongoDB 類似的操作. MySQL 提供了 document store 的服務端, 而 X DevAPI 操作本身底層會被展開為標準 SQL 指令, 所以底層儲存非但支援傳統資料庫的 ACID, 亦可輕易和關聯資料庫之間作結合搜尋.

相關概念

  • Generated Column 透過語法來定義欄位資料內容, 分為虛擬 (virtual generated column) 和物理儲存 (stored generated column) 兩種. Virtial generated column 資料在查詢時即時運算產生, 而 Stored generated column 則在 DML 時變更寫到資料庫內.
    更多資料可參考: MySQL 5.7新特性之generated column | 赖明星
  • Document Document 儲存的是一堆 key-value 的集合, 使用上就像 JSON 資料.
  • Colllection 用來儲存 document 的容器, 在 MySQL 裡為一張普通的 InnoDB 資料表, 每行存放一個 document.
  • CRUD 操作 通用的四種對於 document 的操作行為, 即: Create, Read, Update, Delete.
  • X plugin, X Protocol, X DevAPI

Checking X Plugin Installation

MySQL Client program command:

1
$ mysql -h 127.0.0.1 -u root -p -e "SHOW plugins"

1
2
3
4
5
6
7
+----------------------------+----------+--------------------+---------+---------+
| Name | Status | Type | Library | License |
+----------------------------+----------+--------------------+---------+---------+
...
| mysqlx | ACTIVE | DAEMON | NULL | GPL |
...
+----------------------------+----------+--------------------+---------+---------+

Connection and Session Concepts

Reference