Linux và cơ sở dữ liệu

Các ứng dụng thường cần một nơi để lưu trữ dữ liệu, cơ bản nhất là file dạng text. Tiếp đến là các file cơ sở dữ liệu (database). Trên nền Windows của Microsoft, bạn đã từng quen với rất nhiều loại file và hệ quản trị cơ sở dữ liệu như: khởi đầu là dBASE, FoxBase, FoxPro, Paradox tiếp đến là MS Access, Visual Foxpro rồi đến những hệ quản trị quy mô hơn như Interbase, SQL Server, Oracle, DB2… Các hệ quản trị cơ sở dữ liệu cũng làm cho bạn thân thuộc và xây dựng khá nhiều ứng dụng Windows dựa trên chúng. Ngày nay, gần như các hệ dữ liệu SQL Server, Foxpro, Access, Oracle… là không thể thiếu trên nền Windows. Hầu hết các ngôn ngữ lập trình và các ứng dụng đều cần đến chúng. Bạn cũng đã gặp các trình điều khiển hỗ trợ truy xuất dữ liệu trên Windows như ODBC, ADO, JDBC (cho Java), OCI (Oracle Interface)…

Vậy khi một ứng dụng phát triển trên Linux, chúng ta sẵn có những công cụ này không ? Nếu không thì làm sao lưu trữ dữ liệu hoặc tìm một công cụ nào đó tương đương ? Hầu hết các bạn đều sẽ đặt câu hỏi như vậy khi chương trình xuất phát từ nhu cầu lưu trữ và truy xuất dữ liệu trên Linux.

Đáng tiếc là cho đến nay, cơ sở dữ liệu trên Linux chưa phong phú bằng môi trường Windows. Một số hệ quản trị cơ sở dữ liệu khó lòng sử dụng được trên Linux như MS Access (file .mdb) và SQL Server. Đây là hai hệ quản trị cơ sở dữ liệu quá đặc thù và hoàn toàn phụ thuộc vào môi trường Windows. Ngay cả việc tìm một trình điều khiển để kết nối với máy chủ Windows từ Linux truy xuất dữ liệu của hai hệ này cũng không phải dễ tìm. Hệ quản trị cơ sở dữ liệu Visual Foxpro cũng không hoạt động được trên Linux, tuy nhiên, trước đây Foxproo và dBase (file .dbf) đã từng có phiên bản chạy trên UNIX (và hy vọng cũng sẽ chạy được trên Linux). Mặc dù vậy, đã từ lâu nó không được phát triển và được quan tâm đến nữa. Nhưng bạn không hoàn toàn thất vọng, trừ những sản phẩm của Microsoft ra, hầu như những nhà phát triển các hệ quản trị cơ sở dữ liệu lớn như Oracle, DB2, Interbase… đều có sẵn phiên bản dành cho Linux và Unix. Chúng chạy rất tốt, thậm chí còn hơn cả các phiên bản trên Windows vốn bị giao diện đồ họa làm cho chậm chạp.

Hầu hết đối với những ứng dụng đơn giản, chương trình Linux và Unix đa phần sử dụng file text làm nơi lưu trữ dữ liệu. Chính vì vậy, trong thế giới Linux lẫn UNIX, các chương trình dùng tìm kiếm, xử lý phân tích chuỗi rất nhiều và đa dạng (như perl, awk, shell, grep…). Tuy nhiên, với khối lượng dữ liệu lớn, rõ ràng file text không thích hợp. Dữ liệu cần được tổ chức có thứ tự và quan hệ với nhau chặt chẽ hơn. Cơ sở dữ liệu được dùng cho mục đích này. Dữ liệu lưu trong cơ sở dữ liệu được tổ chức thành từng bảng (table) bao gồm cột và dòng. Các cột còn được gọi là trường (field) trong khi các dòng còn được gọi là bảng ghi (record). Dữ liệu trong các bảng có quan hệ với nhau theo mô hình 1:1, hay n:m và 1:n (Tham khảo thêm các giáo trình cơ sở dữ liệu để hiểu rõ hơn. Đây là một đề tài lớn chúng ta không thể bao trùm hay gói gọn chỉ trong một bài viết này).

Dữ liệu trong bảng được truy xuất bằng các câu lệnh SQL (Structure Query Language – Ngôn ngữ truy vấn cấu trúc). SQL bao gồm các lệnh đơn giản như SELECT (xem dữ liệu), INSERT (chèn thêm dữ liệu), UPDATE (cập nhật dữ liệu), và DELETE (xóa dữ liệu) cho phép bạn tổng quát hóa quá trình tương tác với dữ liệu mà không phụ thuộc vào cấu trúc hạ tầng của bất kỳ hệ quản trị cơ sở dữ liệu nào.

Nếu đã quen với Oracle, DB2 hay Interbase, bạn hoàn toàn có thể cài đặt và chạy chúng với phiên bản dành cho Linux. Chúng hoạt động giống gần như 100% với môi trường Windows (Trong số này có lẽ Oracle là phiên bản chạy khá tốt trên Linux lẫn Windows và rất phổ biến hiện nay).

Tuy nhiên bản thân Linux cũng có những hệ quản trị cơ sở dữ liệu mà Windows chưa biết đến đó là: mSQL, MySQL, PostgreSQL.

– mSQL: trước đây được phát triển vởi David Hughes, tiến sĩ của trường đại học Bond Australia. Khi ông phát triển dự án Minerva và có nhu cầu lưu trữ trên cơ sở dữ liệu. Ông sử dụng cơ sở dữ liệu Postgres rất phổ biến lúc đó. Tuy nhiên, Postgres lúc bấy giờ lại sử dụng giao tiếp truy xuất dữ liệu riêng (gọi là PostQUEL) không theo SQL chuẩn. David quyết định viết ra trình chuyển dịch ngôn ngữ SQL sang PostQUEL và truy xuất dữ liệu của Postgres dựa trên ngôn ngữ truy vấn SQL. Trình diễn dịch này được gọi là miniSQL hay mSQL. Sau một thời gian sử dụng, David nhận thấy nếu tiếp tục chuyển dịch mSQL và PostQUEL, vấn đề càng trở lên phức tạp khi muốn phát triển lên thêm nữa. Ông cho ra đời một hệ cơ sở dữ liệu mới tách biệt khỏi Postgres và kể từ đó mSQL tồn tại để chúng ta có thể sử dụng đến ngày hôm nay. Bạn có thể download hệ cơ sở dữ liệu này tại địa chỉ: http://hughes.com.au

– MySQL: Cơ sở dữ liệu MySQL ra đời trong hoàn cảnh tương tự như mSQL. Công ty mang tên TeX muốn phát triển một ứng dụng Web và sử dụng một cơ sở dữ liệu của riêng họ. Tuy nhiên, công ty nhân ra rằng sử dụng ngôn ngữ SQL là cách tiếp cận với cơ sở dữ liệu tốt nhất. Chính vì vậy khi cần, bạn chuyển mã từ mSQL sang MySQL không mấy khó khăn lắm. Một đặc điểm là MySQL rất đơn giản. MySQL đủ hỗ trợ các chức năng lưu trữ và truy vấn dữ liệu với ngôn ngữ SQL. Tuy nhiên, các tính năng cao cấp mà hầu hết các hệ cơ sở dữ liệu ngày nay đều có như quản lý transaction, quản lý chia sẻ kết nối (share pooling)… lại không có trong MySQL. Mặc dù vậy trong thế giới Linux, MySQL lại được sử dụng rất rộng rãi, nhất là đối với các ứng dụng CGI hay Perl dùng trong môi trường Web, Internet. Bạn có thể tìm thấy phiên bản của MySQL mới nhất tại địa chỉ: http://www.MySQL.com. Ngoài ra, có cả phiên bản MySQL dành cho MS Windows để bạn có thể sử dụng.

– PostgreSQL: Đây là hệ cơ sở dữ liệu ra đời rất lâu, tiền thân xuất phát từ hệ Ingres, được nghiên cứu và phát triển tại trường đại học Berkeley California. Sau này Postgres được phát triển độc lập và dựa trên các khái niệm lẫn mô hình quan hệ dữ liệu khá chặt chẽ. Khởi đầu Postgres không dùng ngôn ngữ SQL. Tuy nhiên đến năm 1995, Joll Chen và Andrew Yu đã thêm khả năng SQL vào cho Postgres và gọi là Postgres95. Đến năm 1996, đội ngũ phát triển chuyển mã nguồn cho cộng đồng mã nguồn mở và từ đó Postgres mang tên PostgreSQL. Bạn có thể tìm thấy PostgreSQL tại địa chỉ: http://www.Postgresql.com. PostgreSQL hỗ trợ cả quản lý các transaction chức năng mà mSQL và MySQL hiện đang thiếu.

(Theo vnexperts.net )