Ngôn ngữ định nghĩa lưu trữ (SDL) là gì?


7

Trong bài giảng Cơ sở dữ liệu của tôi, giáo viên đã đề cập rằng SQL không chỉ là ngôn ngữ định nghĩa dữ liệu (DDL), ngôn ngữ thao tác dữ liệu (DML) và ngôn ngữ định nghĩa xem (VDL), mà còn là ngôn ngữ định nghĩa lưu trữ (SDL). Việc sử dụng cuối cùng không đi kèm với bất kỳ giải thích hoặc ví dụ nào nữa.

Tìm kiếm thêm thông tin trên internet liên quan đến việc sử dụng SQL làm SDL không mang lại kết quả liên quan. Bất cứ ai cũng có thể đưa ra một ví dụ về việc sử dụng SQL làm ngôn ngữ định nghĩa lưu trữ ?

Biên tập:

Một đặc tả như MySQL có SET storage_engine=MYISAM;được coi là một định nghĩa lưu trữ không? Nó không thực sự liên quan đến dữ liệu được lưu trữ, mà là cách nó được lưu trữ.


Bạn đã tìm kiếm "Ngôn ngữ định nghĩa lưu trữ SDL" chưa? Dường như có một số tài liệu tham khảo.
Gordon Linoff

Vâng, nhưng thật đáng buồn, hầu hết trong số chúng là những định nghĩa thực sự nông cạn hoặc đơn giản là định nghĩa của từ viết tắt và không có gì nữa. Tôi thậm chí đã bắt gặp câu hỏi này chỉ trên trang thứ hai về kết quả của Google.

2
Tôi đoán là "Ngôn ngữ định nghĩa lưu trữ" đề cập đến tất cả các bit và phần của CREATE TABLEcâu lệnh mô tả các thuộc tính vật lý của một bảng và / hoặc các loại chỉ mục khác nhau trên một bảng. Tôi chưa bao giờ nghe thuật ngữ này trước đây nhưng tôi có thể thấy một học giả muốn phân biệt như thế nào đối với các thuộc tính cột. Tôi sẽ làm cho câu trả lời này nhưng tôi không chắc đây là câu hỏi SO hợp lệ (mặc dù thú vị).

Công cụ SDL là hầu hết mọi thứ không được chỉ định bởi tiêu chuẩn SQL khác nhau trong mỗi DBMS và chỉ định mọi thứ phải làm với cách thức hoặc nơi lưu trữ dữ liệu trong bảng có liên quan. Vì vậy, "có: SET storage_engine=MYISAMlà một ví dụ cụ thể về MySQL của SDL".
Jonathan Leffler

1
Hãy xem câu trả lời được trích dẫn của tôi ở đây dba.stackexchange.com/a/195646/2639
Evan Carroll

Câu trả lời:


2

Bạn có thể muốn yêu cầu giáo viên của bạn xác định "SDL". Tôi không nghĩ thuật ngữ này xuất hiện trong tiêu chuẩn SQL. Tôi tìm thấy thông tin này (xem trang 3), và tôi không đồng ý: SQL nào không xác định vật chất cấu trúc, các vật lý byte cho mỗi lĩnh vực, các vật lý trật tự hiện trường, các chất phân loại, hay "hồ sơ hỗn hợp", bất cứ điều gì mà có thể có ý nghĩa. SQL hoàn toàn không xác định các trường hoặc bản ghi hoặc nói bất cứ điều gì về cách dữ liệu được lưu trữ trên đĩa nếu chúng được lưu trữ trên đĩa.

Điều đó nói rằng, mọi nhà cung cấp đều cung cấp một số phương tiện để quản trị viên xác định nơi dữ liệu sẽ được lưu giữ và nhiều nhà cung cấp mức độ kiểm soát khác nhau đối với các khía cạnh lưu trữ vật lý (ví dụ: ISAM, các chỉ mục được nhóm). AFAIK tất cả những thứ nằm ngoài tiêu chuẩn SQL. Tôi đã sử dụng các DBMS hiểu SQL DML, nhưng các cơ chế hoàn toàn riêng biệt để xác định các bảng và lưu trữ.


Đó là một dòng tốt: thông số SQL thực sự nói một int lớn là "dài dài"
Evan Carroll


1

Từ nguyên tắc cơ bản của hệ thống cơ sở dữ liệu (phiên bản thứ 7) Phiên bản thứ 7 (trg 39)

Trong các DBMS có sự phân tách rõ ràng được duy trì giữa các mức khái niệm và mức bên trong, DDL được sử dụng để chỉ định lược đồ khái niệm. Một ngôn ngữ khác, ngôn ngữ định nghĩa lưu trữ (SDL) , được sử dụng để chỉ định lược đồ bên trong. Ánh xạ giữa hai lược đồ có thể được chỉ định bằng một trong hai ngôn ngữ này. Trong hầu hết các DBMS quan hệ hiện nay, không có ngôn ngữ cụ thể nào thực hiện vai trò của SDL. Thay vào đó, lược đồ bên trong được chỉ định bởi sự kết hợp của các chức năng, tham số và thông số kỹ thuật liên quan đến việc lưu trữ tệp. Những thứ này cho phép nhân viên DBA kiểm soát các lựa chọn lập chỉ mục và ánh xạ dữ liệu vào bộ lưu trữ. Đối với kiến trúc ba lược đồ thực sự , chúng ta sẽ cần một ngôn ngữ thứ ba, ngôn ngữ định nghĩa khung nhìn (VDL), để xác định các khung nhìn người dùng và ánh xạ của chúng cho lược đồ khái niệm, nhưng trong hầu hết các DBMS, DDL được sử dụng để xác định cả các lược đồ khái niệm và lược đồ bên ngoài. Trong các DBMS quan hệ, SQL được sử dụng trong vai trò của VDL để xác định các khung nhìn của người dùng hoặc ứng dụng như là kết quả của các truy vấn được xác định trước (xem Chương 6 và 7).

Trong các DBMS hiện tại, các loại ngôn ngữ trước thường không được coi là ngôn ngữ phổ biến; thay vào đó, một ngôn ngữ tích hợp toàn diện được sử dụng bao gồm các cấu trúc để định nghĩa lược đồ khái niệm, định nghĩa khung nhìn và thao tác dữ liệu. Định nghĩa lưu trữ thường được giữ riêng biệt, vì nó được sử dụng để xác định cấu trúc lưu trữ vật lý để tinh chỉnh hiệu năng của hệ thống cơ sở dữ liệu, thường được thực hiện bởi nhân viên DBA. Một ví dụ điển hình của ngôn ngữ cơ sở dữ liệu toàn diện là ngôn ngữ cơ sở dữ liệu quan hệ SQL (xem Chương 6 và 7), đại diện cho sự kết hợp của DDL, VDL và DML, cũng như các câu lệnh cho đặc tả ràng buộc, tiến hóa lược đồ và nhiều tính năng khác. SDL là một thành phần trong các phiên bản đầu tiên của SQL nhưng đã bị xóa khỏi ngôn ngữ để chỉ giữ nó ở cấp độ khái niệm và bên ngoài.

Cùng một nguồn tin cho biết, trên trang 201,

Mỗi RDBMS thương mại sẽ có, ngoài các lệnh SQL, một bộ lệnh để chỉ định các tham số thiết kế cơ sở dữ liệu vật lý, cấu trúc tệp cho các quan hệ và các đường dẫn truy cập như chỉ mục. Chúng tôi đã gọi các lệnh này là ngôn ngữ định nghĩa lưu trữ (SDL) trong Chương 2. Các phiên bản SQL trước đó có các lệnh để tạo chỉ mục, nhưng các lệnh này đã bị xóa khỏi ngôn ngữ vì chúng không ở cấp lược đồ khái niệm. Nhiều hệ thống vẫn có các CREATE INDEXlệnh; nhưng họ đòi hỏi một đặc quyền đặc biệt. Chúng tôi mô tả điều này trong Chương 17.

Có vẻ như các thuật ngữ này VDL và SDL xuất phát từ Ba lược đồ , một ý tưởng trong những năm 1970. Theo tác giả này, họ đã ít nhiều được hợp nhất vào SQL một ngôn ngữ toàn diện, cố gắng giải quyết tất cả những điều này.

Tôi tin rằng họ cũng được tham khảo trong Thiết kế kiến ​​trúc sơ bộ cho hệ thống phân cấp chức năng của máy tính cơ sở dữ liệu INFOPLEX. (1980) là "Khoa ngôn ngữ cơ sở dữ liệu" và "Xem lớp dịch". Tôi đã tìm thấy nhiều tài liệu tham khảo vào cuối thập niên 70 và đầu thập niên 80 để mô hình hóa ngôn ngữ và ngôn ngữ lưu trữ.

Lấy một ví dụ CREATE TABLE f (x int, y varchar(25));. Ở đây, bạn đang xác định

  • SDL: lưu trữ cho hàng int, varchar(25).
  • DDL: lược đồ: f(x,y)một tuple quan hệ với hai vị trí.
  • VDL: "khung nhìn" vào nó, đây chỉ là một mối quan hệ có cùng tên với bảng.

Ngoài những thứ dường như trùng lặp với lưu trữ, hầu hết các cơ sở dữ liệu đều mở rộng thông số kỹ thuật để nói về các chỉ mục và như bạn đề cập đến các phụ trợ lưu trữ hoàn toàn khác biệt với mô hình khái niệm và giải quyết mô hình lưu trữ cụ thể.

Bạn có thể thấy điều này một lần nữa trong Hệ thống quản lý cơ sở dữ liệu: Hiểu và áp dụng công nghệ cơ sở dữ liệu (trg 210) là "Ngôn ngữ định nghĩa lưu trữ dữ liệu (DSDL)". Rất nhiều cuộc nói chuyện về CODASYL, RDL (Ngôn ngữ dữ liệu quan hệ), NDL (Ngôn ngữ dữ liệu mạng), IRDIS (Hệ thống từ điển tài nguyên thông tin).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.