năm 1962 tổng thống Kennedy thách thức người Mỹ đưa người lên mặt trăng vào cuối thập kỷ, truyền cảm hứng một nỗ lực kỹ sư đã thành tựu ở những bước đi của Neil Armstrong trên bề mặt mặt trăng
nhiều thành quả của nỗ lực kỹ sư ấy đã được ca ngợi - tàu vũ trụ mới, bộ đồ vũ trụ, và xe tự hành mặt trăng
chương trình Apollo đã cần những công nghệ mới được phát minh ra để đáp ứng, một trong số đó là hệ thống quản lý thông tin [IMS information management system] của IBM
NASA cần một hệ thống quản lý cơ sở dữ liệu để theo dõi tất cả những bộ phận được mang vào xây dựng tên lửa Saturn V, có đến 2 triệu bộ phận như thế
thập niên 1960 cơ sở dữ liệu là một ý tưởng mới, chưa có sản phẩm sẵn sàng cho NASA sử dụng
năm 1965 NASA đặt hàng IBM làm việc với công ty North American Aviation và Caterpillar Tractor để tạo ra một phần mềm cơ sở dữ liệu
năm 1968 IBM lắp đặt một phiên bản IMS hoạt động ở NASA, bấy giờ lấy tên là ICS/DL/I viết tắt cho "hệ thống điều khiển thông tin / ngôn ngữ dữ liệu / giao diện" - có thời gian IBM từng rất ưa chuộng sử dụng dấu gạch chéo, ví dụ ngôn ngữ lập trình PL/1
năm 1970 IBM đổi tên hệ thống thành IMS và trình làng ra thị trường, là một trong những hệ thống quản lý cơ sở dữ liệu được chào bán thương mại đầu tiên
ngày nay IMS vẫn được sử dụng rộng rãi bởi ngân hàng, công ty bảo hiểm, bệnh viện và cơ quan chính phủ cho những tác vụ quan trọng; hơn 95% các công ty Fortune 1000 sử dụng IMS, cũng như 5 ngân hàng lớn nhất Mỹ
mỗi khi khách hàng rút tiền mặt ở máy ATM, khả năng rất cao là khách đang tương tác với IMS theo cách nào đó trong quá trình giao dịch
ngày nay, cơ sở dữ liệu quan hệ là một con trâu già đang bị cạnh tranh bởi cơ sở dữ liệu NoSQL thời thượng; IMS có thể coi là con khủng long, một di vật từ thời kỳ trước thập niên 1970 cơ sở dữ liệu quan hệ được phát minh
IMS vẫn là hệ thống cơ sở dữ liệu đang gánh vác những tác vụ quan trọng, cho thấy cái nhìn thấu suốt về cách thức mô hình quan hệ đã cải thiện những hệ thống tiền nhiệm, nếu không muốn nói là đang minh hoạ một mô hình thay thế tốt hơn, thích hợp cho một số vấn đề nhất định
IMS hoạt động theo một mô hình thứ bậc, tức là, thay vì nghĩ đến dữ liệu là những bảng biểu có thể được hợp nhất nhờ sử dụng phép toán JOIN, IMS nghĩ đến dữ liệu như những cái cây; mỗi loại ghi nhận được lưu trữ có thể có những loại ghi nhận khác, là những đứa con; những kiểu ghi nhận 'con' này là thông tin phụ, mà bạn có thể quan tâm, miêu tả một bản ghi nhận của kiểu 'cha/mẹ'
ví dụ, bạn muốn lưu trữ thông tin về khách hàng của ngân hàng; bạn có thể có một kiểu ghi nhận là khách hàng, và một kiểu ghi nhận khác là tài khoản; giống như một cơ sở dữ liệu quan hệ, mỗi bảng biểu có những cột, thì những bản ghi nhận này sẽ có những lĩnh vực khác nhau; ta có thể muốn có một lĩnh vực 'họ', một lĩnh vực 'tên', và một lĩnh vực 'thành phố' cho mỗi khách hàng; sau đó ta phải quyết định xem liệu ta có hay tìm khách hàng trước và sau đó tìm thông tin về tài khoản của khách hàng hay không, hay liệu ta có hay tìm tài khoản trước và sau đó tìm thông tin về chủ sở hữu tài khoản ấy
giả định rằng ta sẽ truy cập khách hàng trước, sau đó ta sẽ quy định kiểu ghi nhận tài khoản là đứa con của kiểu ghi nhận khách hàng; mô hình cơ sở dữ liệu sẽ được vẽ biểu đồ dưới đây
một cơ sở dữ liệu thực tế sẽ như ảnh dưới
mỗi bản ghi nhận 'cha/mẹ' sẽ bao gồm những con trỏ chỉ đến những đứa con, tức là di chuyển xuống cây từ nút ngọn [root] sẽ hiệu quả (thực ra, mỗi cha/mẹ sẽ lưu trữ duy nhất một con trỏ chỉ đến con trưởng. Đứa con trưởng sẽ tiếp tục chứa những con trỏ chỉ đến những đứa em, để đảm bảo kích thước của một bản ghi nhận không bị thay đổi tuỳ theo số lượng con cái)
nếu ta vẫn truy cập dữ liệu theo những cách mà ta đã tiên liệu khi ta thiết kế cơ sở dữ liệu lúc đầu, năng lực này có thể khiến việc truy cập dữ liệu là rất nhanh; theo IBM, một đối tượng IMS có thể xử lý 10 vạn giao dịch mỗi giây; nhược điểm là ta mất đi nhiều tính linh hoạt, nếu ta muốn truy cập dữ liệu theo những cách mà ta chưa tiên liệu, ta sẽ vất vả
ví dụ ta muốn truy cập những tài khoản trước khi truy cập khách hàng: có thể khách hàng đang đưa ra một cập nhật địa chỉ, và ta muốn khách hàng cung cấp số tài khoản; ta muốn sử dụng một số tài khoản để tìm ra một tài khoản, và từ đó tìm ra chủ sở hữu của tài khoản; nhưng vì tất cả truy cập sẽ bắt đầu từ 'ngọn' [root] cây, không có cách nào hiệu quả để ta tiếp cận một tài khoản mà không xác định được khách hàng trước
để sửa vấn đề này, ta có thể trình làng một cái cây thứ hai, là một hệ thống thứ bậc bắt đầu với những bản ghi nhận tài khoản; sau đó những bản ghi nhận tài khoản này sẽ có những bản ghi nhận khách hàng là những đứa con; mặc dù giúp truy cập hiệu quả tài khoản rồi khách hàng, việc này sẽ tăng gấp đôi thông tin đã lưu trữ sẵn trong cơ sở dữ liệu, vì có 2 cái cây lưu trữ cùng thông tin ấy nhưng khác thứ bậc
lựa chọn khác là lập ra một tài khoản 'chỉ số' sẽ trỏ vào bản ghi nhận tài khoản nếu đã biết số tài khoản; làm như vậy sẽ thêm việc khi thực hiện những phép toán chèn và cập nhật sau này
năm 1970 Edgar Frank Codd đề xướng mô hình quan hệ, để khắc phục tính cứng nhắc và vấn đề gấp đôi thông tin ở trên, xuất bản báo cáo 'Một mô hình quan hệ dữ liệu cho ngân hàng dữ liệu chia sẻ' trình làng một mô hình lưu trữ dữ liệu sẽ có thể giúp người dùng khỏi cần biết bất cứ gì về cách thức dữ liệu của họ được lưu trữ
IMS lựa chọn lưu trữ dữ liệu theo mô hình cây thứ bậc, là một mô hình từ-dưới-lên hệ quả của vật lý phần cứng; mô hình quan hệ là dựa vào 'đại số quan hệ' và sơ đồ lưu trữ dữ liệu có thể là bất cứ thứ gì, miễn là nó chứa được mô hình
lợi ích của mô hình quan hệ là rằng, bất chấp những quyết định trước đấy khiến cơ sở dữ liệu lưu trữ dữ liệu theo một cách cụ thể nào đó, người dùng vẫn có thể thực hiện một số truy vấn nhất định, một cách hiệu quả
ngân hàng và những tổ chức lớn vẫn đang sử dụng IMS phần vì hiệu năng, phần khác để tránh né việc viết lại mã nguồn di sản thiết-yếu-cho-nhiệm-vụ; cho nên khó đánh giá được liệu lợi ích của việc giữ nguyên có đủ ngăn những tổ chức lớn khỏi chuyển sang một cơ sở dữ liệu hiện đại hay không
cơ sở dữ liệu NoSQL đã cho thấy có những người sẵn sàng bỏ qua sự tiện lợi của mô hình quan hệ để cải thiện hiệu năng, thứ như MongoDB khuyến khích người dùng lưu trữ dữ liệu dưới dạng phân-tán [denormalize] giống của IMS
nếu bạn lựa chọn lưu trữ một số thực thể bên trong một bản ghi nhận JSON khác, căn bản bạn đã tạo ra một hệ thống thứ bậc IMS, và bạn đã hạn chế khả năng truy vấn dữ liệu đó sau này; nhưng có thể ấy là đánh đổi mà bạn sẵn lòng bỏ ra, cho nên kể cả nếu IMS không xuất hiện trước mô hình quan hệ của Ted Codd nhiều năm thì vẫn còn những lý do tại sao những nhà phát minh IMS không hào hứng ứng dụng mô hình quan hệ cho lắm
IMS không được phát hành miễn phí, mà phải mua của IBM; vấn đề lớn hơn nữa là IMS chỉ chạy trên những máy mainframe như IBM z13 và vẫn đang vận hành những bệnh viện khu vực, toàn bộ lĩnh vực tài chính, và cả chính phủ liên bang Mỹ
Không có nhận xét nào:
Đăng nhận xét