Chúng tôi có thể lưu trữ tài liệu trong mysql không?

Tôi khuyên bạn nên tìm hiểu kỹ hơn về hàm JSON_TABLE, hàm này trích xuất dữ liệu từ tài liệu JSON và trả về dưới dạng bảng quan hệ… Thật tuyệt vời

Tuy nhiên MySQL 8. 0 cung cấp một cách khác để xử lý tài liệu JSON, thực tế là theo cách tiếp cận “Không chỉ SQL” [NoSQL]…
Nói cách khác, nếu bạn cần/muốn quản lý tài liệu [bộ sưu tập] JSON theo cách không . 0.
Bạn có biết điều đó không?

Kiến trúc cửa hàng tài liệu MySQL

Hãy có một cái nhìn tổng quan nhanh về kiến ​​trúc


  • Plugin X – Plugin X cho phép MySQL sử dụng Giao thức X và sử dụng Trình kết nối và Shell để đóng vai trò là ứng dụng khách cho máy chủ
  • Giao thức X – Giao thức X là một giao thức máy khách mới dựa trên thư viện Protobuf và hoạt động cho cả hoạt động CRUD và SQL
  • X DevAPI – X DevAPI là API nhà phát triển không đồng bộ, hiện đại, mới cho các hoạt động CRUD và SQL trên Giao thức X. Nó giới thiệu Bộ sưu tập dưới dạng đối tượng Schema mới. Tài liệu được lưu trữ trong Bộ sưu tập và được đặt hoạt động CRUD chuyên dụng của chúng
  • MySQL Shell – MySQL Shell là một giao diện Javascript, Python hoặc SQL tương tác hỗ trợ phát triển và quản trị cho Máy chủ MySQL. Bạn có thể sử dụng MySQL Shell để thực hiện các truy vấn và cập nhật dữ liệu cũng như các hoạt động quản trị khác nhau
  • Trình kết nối MySQL – Trình kết nối hỗ trợ Giao thức X và cho phép bạn sử dụng X DevAPI bằng ngôn ngữ bạn đã chọn [Node. js – PHP – Python – Java –. NET – C++,…]

Viết ứng dụng bằng X DevAPI

Với tư cách là người từ chối trách nhiệm, tôi không phải là nhà phát triển, vì vậy xin lỗi vì không có mã ưa thích nào trong bài đăng trên blog này.
Tuy nhiên, tin tốt là tôi có thể cho bạn thấy rằng bạn sẽ có thể tìm thấy tài nguyên dành cho nhà phát triển MySQL tốt nhất từ ​​trước đến nay 🙂 đó là.

https. //bên trongmysql. com/

Và để bắt đầu, tôi khuyên bạn nên tập trung vào các bài viết sau

  • Nút. JS
    • https. //bên trongmysql. com/giới thiệu-kết nối-nút-js-for-mysql-8-0/
  • con trăn
    • https. //bên trongmysql. com/using-mysql-connector-python-8-0-with-mysql-8-0/
  • MẠNG LƯỚI
    • https. //bên trongmysql. com/introducing-connector-net-with-full-support-for-mysql-8-0/
  • Java
    • https. //bên trongmysql. com/connector-j-8-0-11-the-face-cho-cơ-sở-dữ-liệu-định-hướng-tài-liệu-mới-của-bạn/
  • PHP
    • https. //bên trongmysql. com/introducing-the-mysql-x-devapi-php-extension-for-mysql-8-0/
  • C++
    • https. //bên trongmysql. com/co-tinh-tinh-trong-connector-c-8-0/
  • ODBC
    • https. //bên trongmysql. com/chuyen-tinh-tinh-trong-connector-odbc-8-0/

Và tất nhiên là cả những bài viết mới nhất.
Hơn nữa, một tài nguyên khác sẽ hữu ích cho bạn là

Hướng dẫn sử dụng X DevAPI

Sử dụng Kho lưu trữ tài liệu với MySQL Shell

Nếu bạn là một DBA, OPS và rõ ràng là một nhà phát triển, cách đơn giản nhất để sử dụng [hoặc kiểm tra] MySQL Document Store, là với MySQL Shell

MySQL Shell là trình bao quản trị và phát triển tích hợp, trong đó tất cả các sản phẩm MySQL sẽ có sẵn thông qua một giao diện tập lệnh chung.
Bạn nào chưa biết thì tải về nhé.
Tin tôi đi, bạn sẽ thích nó.


Các tính năng chính của MySQL Shell là

  • Viết kịch bản cho chế độ Javascript, Python và SQL
  • Hỗ trợ giao thức MySQL Standard và X
  • Tài liệu và mô hình quan hệ
  • Tài liệu CRUD và API quan hệ thông qua tập lệnh
  • Các định dạng kết quả đầu ra được phân tách bằng Bảng, JSON, Tab truyền thống
  • Cả hoạt động tương tác và hàng loạt

Ghi chú

MySQL Shell cũng là một thành phần chính của MySQL InnoDB Cluster. Trong bối cảnh này, nó cho phép bạn triển khai và quản lý cụm Sao chép nhóm MySQL

Xem hướng dẫn MySQL InnoDB Cluster của tôi

Các bước đầu tiên với MySQL Shell

Hãy kết nối với Máy chủ MySQL bằng MySQL Shell [mysqlsh]

1

2

3

4

5

6

$ mysqlsh root@myHost

MySQL Shell 8. 0. 15

.. . cắt . . .

Kết nối MySQL của bạn id 15 [X protocol]

Phiên bản máy chủ version. 8. 0. 15 MySQL Cộng đồng Máy chủ - GPL

Không mặc định lược đồ được chọn; type \use to set one.

Chúng ta phải ở trong phiên X để sử dụng MySQL làm kho lưu trữ tài liệu. May mắn thay, không có bước bổ sung nào, vì đó là mặc định trong MySQL 8. 0. Lưu ý rằng cổng “X” mặc định là 33060.
Bạn có thể kiểm tra xem mình có đang ở trong phiên X hay không bằng cách sử dụng giao thức X

1

2

3

4

5

6

7

8

9

10

11

12

13

MySQL myHost. 33060+ JS> phiên

 

MySQL myHost. 33060+ JS> \status

.. . cắt. . .

 

Phiên loại.                  X

 

Mặc định lược đồ.               

Lược đồ hiện tại.               

Phiên bản máy chủ version.                8. 0. 15 MySQL Cộng đồng Máy chủ - GPL

Phiên bản giao thức.              giao thức X protocol

.. . cắt. . .

Nếu bạn được kết nối trong phiên cổ điển, bạn sẽ nhận được thông tin đầu vào sau [lưu ý “ \sql

Chuyển sang chế độ SQL. . . Lệnh kết thúc với ;

 

MySQL myHost. 3306 SQL> HIỂN THỊ BIẾNLIKE 'mysqlx_port';

+---------------+-------+

| Tên_biến . Giá trị .

+---------------+-------+

| mysqlx_port   . 33060 .

+---------------+-------+

Sau đó kết nối lại với máy chủ bằng đúng cổng [33060 theo mặc định] và bạn sẽ ổn thôi

1

2

3

4

5

6

7

8

9

10

11

MySQL myHost. 3306 SQL> \kết nối . root@myHost:33060

.. . cắt. . .

Kết nối MySQL của bạn id 66 [X protocol]

Phiên bản máy chủ version. 8. 0. 15 MySQL Cộng đồng Máy chủ - GPL

Không mặc định lược đồ được chọn; type \use to set one.

 

MySQL myHost. 33060+ SQL> \js

Chuyển sang Chế độ JavaScript. . .

 

MySQL myHost. 33060+ JS> phiên

CRUD

Chúng tôi sẽ tạo một lược đồ [bản demo] nơi chúng tôi sẽ thực hiện các thử nghiệm của mình

1

2

3

4

5

6

MySQL myHost. 33060+ JS> phiên . .createSchema['demo']

 

 

MySQL myHost. 33060+ JS> \use demo

Mặc định lược đồ `demo` accessible through db.

Ghi chú

Ngôn ngữ mặc định của MySQL Shell là JavaScript. Tuy nhiên, tất cả các bước được mô tả trong bài viết này cũng có thể được thực hiện bằng Python

e. g

JS> phiên. createSchema['demo']

Py> phiên. create_schema['demo']

Tạo tài liệu

Tạo bộ sưu tập [my_coll1] chèn bản demo lược đồ và chèn tài liệu

1

2

3

4

5

6

MySQL myHost. 33060+ demo JS> . db.createCollection['my_coll1'];

 

 

MySQL myHost. 33060+ demo JS> . db.my_coll1. thêm[{"tiêu đề":"MySQL Document Store", "abstract". "SQL bây giờ là tùy chọn. ", "mã". "42"}]

Truy vấn OK, 1 mục affected [0.0358 giây]

Cố gắng thêm một tài liệu JSON không hợp lệ sẽ gây ra lỗi

1

2

MySQL myHost. 33060+ demo JS> . db.my_coll1. add["Đây không phải là tài liệu JSON hợp lệ"] . db.getCollections[]

[

    

]

Tìm tài liệu

Hiển thị nội dung của một bộ sưu tập với find[]

1

2

3

4

5

6

7

8

9

10

MySQL myHost. 33060+ demo JS> . db.my_coll1. tìm[]

[

    {

        "_id". "00005c9514e60000000000000053",

        "mã". "42",

        "tiêu đề". "Kho tài liệu MySQL",

        "trừu tượng". "SQL bây giờ là tùy chọn. "

    }

]

1 tài liệu trong bộ [0.0029 giây]

Ghi chú

Mỗi tài liệu yêu cầu một trường định danh có tên _id. Giá trị của trường _id phải là duy nhất trong số tất cả các tài liệu trong cùng một bộ sưu tập.
Máy chủ MySQL đặt giá trị _id nếu tài liệu không chứa trường _id.

Xin vui lòng đọc. Hiểu ID tài liệu

Bạn có thể thực hiện nhiều thao tác trên tài liệu của mình. Một cách thiết thực để lấy danh sách các chức năng khả dụng là nhấn phím
Ví dụ: nhập db. my_coll1. rồi nhấn

1

2

3

MySQL myHost. 33060+ demo JS> . db.my_coll1.

thêm[]               đếm[]             dropIndex[]         find[]              getOne[]            getSession[]        modify[]            remove[]            replaceOne[]        session

addOrReplaceOne[]   createIndex[]       existsInDatabase[]  getName[]           getSchema[]         help[]              name                removeOne[]         schema

Bạn cũng có thể sử dụng trợ giúp tích hợp MySQL Shell tuyệt vời [tôi thực sự khuyên bạn nên đọc bài viết của đồng nghiệp Jesper của tôi] và vui lòng đánh dấu trang là blog.
Cuối cùng nhưng không kém phần quan trọng là tài liệu của chúng tôi. Hướng dẫn sử dụng X DevAPI, Tài liệu tham khảo API MySQL Shell JavaSCript & Tài liệu tham khảo API MySQL Shell Python.

sửa đổi tài liệu

Bạn sẽ cần chức năng sửa đổi []

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

MySQL myHost. 33060+ demo JS> . db.my_coll1. tìm["_id='00005c9514e60000000000000053'"].trường["mã"]

[

    {

        "mã". "42"

    }

]

 

 

MySQL myHost. 33060+ demo JS> . db.my_coll1. sửa đổi["_id='00005c9514e60000000000000053'"].đặt["mã","2019"]

Truy vấn OK, 1 mục affected [0.0336 giây]

Hàng khớp. 1  Đã thay đổi. 1  Cảnh báo. 0

 

 

MySQL myHost. 33060+ demo JS> . db.my_coll1. tìm["_id='00005c9514e60000000000000053'"].trường["mã"]

[

    {

        "mã". "2019"

    }

]

Xóa nội dung khỏi tài liệu

Bạn cũng có thể sửa đổi cấu trúc của tài liệu bằng cách xóa một khóa và nội dung của nó bằng sửa đổi[] và bỏ đặt[]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

MySQL myHost. 33060+ demo JS> . db.my_coll1. thêm[{"tiêu đề":"Trích dẫn", "thông báo". "Phấn đấu để trở nên vĩ đại"}]

Truy vấn OK, 1 mục affected [0.0248 giây]

 

MySQL myHost. 33060+ demo JS> . db.my_coll1. tìm[]

[

    {

        "_id". "00005c9514e60000000000000053",

        "mã". "42",

        "tiêu đề". "Kho tài liệu MySQL",

        "trừu tượng". "SQL bây giờ là tùy chọn. "

    },

    {

        "_id". "00005c9514e60000000000000054",

        "tiêu đề". "Trích dẫn",

        "thông báo". "Phấn đấu vì sự vĩ đại"

    }

]

2 tài liệu trong bộ [0.0033 giây]

 

MySQL myHost. 33060+ demo JS> . db.my_coll1. sửa đổi["_id='00005c9514e60000000000000054'"].bỏ đặt["tiêu đề"]

Truy vấn OK, 1 mục affected [0.0203 giây]

 

Hàng khớp. 1  Đã thay đổi. 1  Cảnh báo. 0

 

MySQL myHost. 33060+ demo JS> . db.my_coll1. tìm["_id='00005c9514e60000000000000054'"]

[

    {

        "_id". "00005c9514e60000000000000054",

        "thông báo". "Phấn đấu vì sự vĩ đại"

    }

]

Xóa tài liệu

Chúng tôi đang thiếu một thao tác quan trọng cuối cùng, xóa tài liệu bằng remove[]

1

2

3

4

5

6

MySQL myHost. 33060+ demo JS> . db.my_coll1. xóa["_id='00005c9514e60000000000000054'"]

Truy vấn OK, 1 mục affected [0.0625 giây]

 

 

MySQL myHost. 33060+ demo JS> . db.my_coll1. tìm["_id='00005c9514e60000000000000054'"]

Trống bộ [0. 0003 giây]

Bạn cũng có thể xóa tất cả tài liệu trong bộ sưu tập bằng một lệnh. Để làm như vậy, hãy sử dụng phương thức remove[“true”] mà không chỉ định bất kỳ điều kiện tìm kiếm nào.
Rõ ràng đó thường không phải là một thông lệ tốt…

Nhập tài liệu JSON

Hãy làm việc với bộ sưu tập JSON lớn hơn.
MySQL Shell cung cấp một công cụ rất tiện lợi, có tên là importJson[], để dễ dàng nhập các tài liệu JSON bên trong Máy chủ MySQL của bạn ở dạng tập hợp hoặc bảng.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

MySQL myHost. 33060+ demo JS> . db.getCollections[]

[

    

]

 

 

MySQL myHost. 33060+ demo JS> . util.importJson['GoT_episodes. json']

Đang nhập từ tệp "GoT_episodes. json" đến bộ sưu tập `demo`.`GoT_episodes` trong MySQL . Server at myHost:33060

 

.. 73. 73

Đã xử lý 47. 74 KB trong 73 tài liệu . 1051 0.1051 giây [694. 75 tài liệu/s]

Tổng số đã nhập thành công tài liệu 73 [694.75 tài liệu/s]

 

 

MySQL myHost. 33060+ demo JS> . db.getCollections[]

[

    ,

    

]

Bạn có thể tìm nguồn tệp JSON tại đây.
Lưu ý rằng tôi phải thực hiện thêm một bước trước khi nhập dữ liệu.
sed ‘s/}}},{“id”/}}} {“id”/g’ got_episodes. json. BAK > got_episodes. json

Nhân tiện, bạn có thể nhập dữ liệu từ MongoDB sang MySQL \o/

  • Nhập dữ liệu từ MongoDB vào MySQL. Các loại dữ liệu BSON
  • Nhập dữ liệu từ MongoDB sang MySQL bằng JavaScript
  • Nhập dữ liệu từ MongoDB sang MySQL bằng Python
  • Chuyển đổi để thể hiện các loại dữ liệu BSON

Không còn lý do gì để thoát khỏi MongoDB nữa 😉

Hãy thực hiện một số truy vấn…

Hiển thị 1 tài liệu

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

MySQL myHost. 33060+ demo JS> . db.GoT_tập. tìm[]. giới hạn[1]

[

    {

        "id". 4952,

        "_id". "00005c9514e6000000000000009e",

        "url". "http. //www. mê cung tv. com/episodes/4952/game-of-thrones-1x01-winter-is-coming",

        "tên". "Mùa đông đến",

        "hình ảnh". {

            "trung bình". "http. //tĩnh. tvmaze. com/uploads/images/medium_landscape/1/2668. jpg",

            "bản gốc". "http. //tĩnh. mê cung tv. com/uploads/images/ original_untouched/1/2668. jpg"

        },

        "_links". {

            "self". {

                "href". "http. //api. tvmaze. com/episodes/4952"

            }

        },

        "số". 1,

        "mùa". 1,

        "ngày phát sóng". "2011-04-17",

        "thời gian phát sóng". "21. 00",

        "thời gian chạy". 60,

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""",

        "dấu hàng không". "2011-04-18T01. 00. 00+00. 00"

    }

]

Trông giống như dữ liệu liên quan đến một chương trình truyền hình nổi tiếng 🙂

Tất cả các tập từ phần 1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

MySQL myHost. 33060+ demo JS> . db.GoT_tập. tìm["season=1"].trường["tên", "summary", "airdate"].sắp xếp["số"]

[

    {

        "tên". "Mùa đông đến",

        "ngày phát sóng". "2011-04-17",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Hoàng lộ",

        "ngày phát sóng". "24-04-2011",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Chúa tuyết",

        "ngày phát sóng". "2011-05-01",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Những kẻ què quặt, những kẻ khốn nạn và những thứ bị hỏng",

        "ngày phát sóng". "2011-05-08",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Sói và sư tử",

        "ngày phát sóng". "15-05-2011",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Vương miện vàng",

        "ngày phát sóng". "22-05-2011",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Bạn thắng hoặc bạn chết",

        "ngày phát sóng". "29-05-2011",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Đầu nhọn",

        "ngày phát sóng". "2011-06-05",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Baelor",

        "ngày phát sóng". "2011-06-12",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    },

    {

        "tên". "Lửa và Máu",

        "ngày phát sóng". "2011-06-19",

        "tóm tắt". """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    }

]

Tập đầu tiên của mỗi mùa

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

MySQL myHost. 33060+ demo JS> . db.GoT_tập. tìm["number=1"].trường["tên", "airdate", "season"].sắp xếp["mùa"]

[

    {

        "tên". "Mùa đông đến",

        "mùa". 1,

        "ngày phát sóng". "17-04-2011"

    },

    {

        "tên". "Miền Bắc Nhớ",

        "mùa". 2,

        "ngày phát sóng". "2012-04-01"

    },

    {

        "tên". "Valar Dohaeris",

        "mùa". 3,

        "ngày phát sóng". "31-03-2013"

    },

    {

        "tên". "Hai thanh kiếm",

        "mùa". 4,

        "ngày phát sóng". "2014-04-06"

    },

    {

        "tên". "Cuộc chiến sắp tới",

        "mùa". 5,

        "ngày phát sóng". "2015-04-12"

    },

    {

        "tên". "Người đàn bà đỏ",

        "mùa". 6,

        "ngày phát sóng". "24-04-2016"

    },

    {

        "tên". "Dragonstone",

        "mùa". 7,

        "ngày phát sóng". "2017-07-16"

    },

    {

        "tên". "TBA",

        "mùa". 8,

        "ngày phát sóng". "2019-04-14"

    }

]

8 tài liệu trong bộ [0.0047 giây]

Tuyên bố chuẩn bị CRUD

Mẫu phổ biến với các kho dữ liệu lưu trữ tài liệu là thực hiện lặp đi lặp lại cùng loại [hoặc tương tự] loại truy vấn đơn giản [e. g. tra cứu dựa trên “id”].
Các truy vấn này có thể được tăng tốc bằng cách sử dụng các câu lệnh đã chuẩn bị sẵn [CRUD].

Ví dụ: nếu ứng dụng của bạn thường sử dụng truy vấn sau

1

2

3

4

5

6

7

MySQL myHost. 33060+ demo JS> . db.GoT_tập. tìm["số=1 VÀ mùa=1"].trường["tên", "airdate"]

[

    {

        "tên". "Mùa đông đến",

        "ngày phát sóng". "17-04-2011"

    }

]

Vì vậy, có lẽ nên sử dụng các câu lệnh đã chuẩn bị sẵn.
Đầu tiên chúng ta cần chuẩn bị truy vấn.

1

2

// Chuẩn bị một câu lệnh sử dụng một tham số được đặt tên

var gotEpisode = db. GoT_tập. tìm["số =. số tập VÀ mùa =. seasonNum"]. trường["tên", "airdate"]

Sau đó liên kết giá trị với tham số

1

2

3

4

5

6

7

MySQL myHost. 33060+ demo JS> . gotEpisode.ràng buộc['episodeNum', 1].ràng buộc['seasonNum', 1]

[

    {

        "tên". "Mùa đông đến",

        "ngày phát sóng". "17-04-2011"

    }

]

1

2

3

4

5

6

7

MySQL myHost. 33060+ demo JS> . gotEpisode.ràng buộc['episodeNum', 7].ràng buộc['seasonNum', 3]

[

    {

        "tên". "Gấu và thiếu nữ xinh đẹp",

        "ngày phát sóng". "2013-05-12"

    }

]

đơn giản là mạnh mẽ

Mục lục

Thật vậy, các chỉ số có liên quan là một phương pháp phổ biến để cải thiện hiệu suất. Kho lưu trữ tài liệu MySQL cho phép bạn lập chỉ mục các khóa của mình bên trong tài liệu JSON

Tài liệu có thể được lưu trữ trong cơ sở dữ liệu?

Cơ sở dữ liệu tài liệu là một loại cơ sở dữ liệu phi quan hệ được thiết kế để lưu trữ và truy vấn dữ liệu dưới dạng tài liệu dạng JSON . Cơ sở dữ liệu tài liệu giúp các nhà phát triển lưu trữ và truy vấn dữ liệu trong cơ sở dữ liệu dễ dàng hơn bằng cách sử dụng cùng định dạng mô hình tài liệu mà họ sử dụng trong mã ứng dụng của mình.

MySQL lưu tệp ở đâu?

Thông thường, MySQL sẽ lưu trữ dữ liệu trong thư mục mặc định của /var/lib/mysql .

Tài liệu MySQL có phải là DB không?

Theo truyền thống, các cơ sở dữ liệu quan hệ như MySQL thường yêu cầu xác định lược đồ trước khi tài liệu có thể được lưu trữ. Các tính năng được mô tả trong phần này cho phép bạn sử dụng MySQL làm kho lưu trữ tài liệu , đây là một hệ thống lưu trữ không có lược đồ và do đó linh hoạt với lược đồ dành cho .

Kiểu dữ liệu nào phù hợp hơn để lưu trữ tài liệu trong MySQL?

Loại dữ liệu nào phù hợp hơn để lưu trữ “tài liệu” trong Mysql? . Văn bản dài có phạm vi lớn nhất.

Chủ Đề