Sự khác biệt giữa Firebird và InterBase
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
Tổng quan lịch sử
InterBase được tạo ra vào năm 1985: đây là cơ sở dữ liệu đa phiên bản thương mại đầu tiên. Vào cuối năm 1999, Borland quyết định đóng cửa quá trình phát triển InterBase và công bố mã nguồn của nó theo Giấy phép Công cộng InterBase. Mã này đã được sao chép (được phép theo giấy phép), và Firebird ra đời - từ phiên bản 1.0, Firebird là một cơ sở dữ liệu sẵn sàng cho sản xuất, dựa trên nhiều thập kỷ phát triển InterBase trước đó.
Vào cuối năm 2000, Borland quay trở lại với mã nguồn đóng và giấy phép thương mại (chính xác như trước đây) với InterBase và bắt đầu phát triển phiên bản 6.5.
Firebird 1.0 được phát hành vào năm 2002, với nhiều bản sửa lỗi và mở rộng DDL và DML. Quá trình phát triển Firebird tích cực tiếp tục sau 1.0, và vào năm 2004, phiên bản chính thứ hai của Firebird (v.1.5) đã được phát hành. Borland vào thời điểm đó cũng đã giới thiệu các phiên bản mới (7.0 và 7.1). Firebird 1.5 và InterBase 7.0 không tương thích cả về định dạng cơ sở dữ liệu (ODS) lẫn chức năng cốt lõi. Việc di chuyển từ InterBase sang Firebird và ngược lại bằng sao lưu/phục hồi là không thể kể từ Firebird 2.0 và InterBase 7.0.
Kể từ đó, sự khác biệt giữa Firebird và InterBase ngày càng lớn hơn.
Tình hình hiện tại (2017)
Cách duy nhất để di chuyển giữa các phiên bản hiện tại của InterBase và Firebird là thông qua tập lệnh SQL (với việc sửa thủ công các khác biệt) và sau đó bơm dữ liệu từ cơ sở dữ liệu cũ sang cơ sở dữ liệu mới. Tuy nhiên, việc di chuyển từ InterBase sang Firebird vẫn dễ dàng hơn so với sang một DBMS khác, vì các nguyên tắc quản lý giao dịch là giống nhau.
Chúng tôi đã thực hiện một số lần di chuyển như vậy cho nhiều phiên bản khác nhau của InterBase và Firebird - xem thêm chi tiết về dịch vụ di chuyển của chúng tôi tại đây - và chúng đều diễn ra tốt đẹp.
Dưới đây bạn có thể tìm thấy bảng danh sách các khác biệt giữa các phiên bản mới nhất: Firebird 3.0 và InterBase 2017.
| Khác biệt giữa Firebird và InterBase |
|---|
| Tính năng |
| — |
| SQL (DML và DDL) |
| Độ ổn định của con trỏ (INSERT FROM SELECT chính xác) |
| Con trỏ cuộn được (hai chiều) |
| Execute Statement |
| Execute Statement On External (truy vấn đến cơ sở dữ liệu Firebird bên ngoài) |
| Giao dịch tự trị |
| Bảng dẫn xuất (SELECT từ SELECT) |
| Biểu thức bảng chung đệ quy (CTE) |
| Hàm cửa sổ và hàm thống kê |
| MERGE |
| Mệnh đề RETURNING cho insert/update/delete |
| Trigger khi kết nối/ngắt kết nối |
| Trigger khi giao dịch bắt đầu/cam kết/hủy bỏ |
| Trigger cho DDL |
| Hỗ trợ Regexp cho SUBSTRING |
| Kiểu dữ liệu Boolean |
| Kiểu dữ liệu BIGINT |
| Hàm PSQL |
| Thủ tục, hàm, trigger bên ngoài ( Java) |
| Thủ tục và hàm lồng nhau |
| Hàm xác định (deterministic) |
| Biến ngữ cảnh trong không gian tên SYSTEM, USER_SESSION và USER_TRANSACTION |
| Package (thủ tục và hàm) |
| Ngoại lệ có tham số |
| Cột IDENTITY |
| RECREATE (kết hợp CREATE hoặc ALTER) |
| Hỗ trợ UTF8 |
| Hỗ trợ tìm kiếm không phân biệt chữ hoa chữ thường Unicode |
| Độ dài định danh |
| Chỉ mục COMPUTED BY (trên biểu thức) |
| Kiến trúc/Quản trị |
| SMP SuperServer (hỗ trợ đa lõi) |
| Classic (phiên bản cho mỗi kết nối) |
| SuperClassic |
| Nhiều phiên bản (tại các cổng khác nhau) |
| Bí danh cơ sở dữ liệu |
| Định tuyến lại giữa các phiên bản máy chủ |
| Nhật ký ghi trước (WAL) |
| Khôi phục tại thời điểm (point-in-time-recovery) |
| Tạo chỉ mục song song trong quá trình phục hồi |
| Sao lưu gia tăng |
| Bảng giám sát hệ thống |
| Máy khách và máy chủ 64-bit |
| Phiên bản nhúng |
| Nhúng cho Android (di động) |
| Nhúng cho iOS (di động) |
| ChangeViews ( nó là gì?) |
| Nén đường truyền (Wire compression) |
| Cải tiến giao thức mạng cho mạng có độ trễ cao (cho truy vấn SQL qua internet) |
| Sao chép cấp máy chủ (gốc) |
| Trace và kiểm toán |
| Xác thực cơ sở dữ liệu trực tuyến |
| Bảo mật |
| Cơ sở dữ liệu bảo mật |
| Người dùng trong cơ sở dữ liệu |
| Mã hóa cơ sở dữ liệu |
| Mã hóa cột |
| Nhiều khóa mã hóa |
| Mã hóa đường truyền |
| Quyền người dùng DDL |
| Quản lý người dùng qua SQL |
| UDF và hàm tích hợp |
| Hàm do người dùng định nghĩa (User Defined Functions) |
| SDF hay còn gọi là Hàm do máy chủ định nghĩa (nhanh hơn UDF) |
| Hỗ trợ trình điều khiển và thư viện máy khách |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Cấp phép/Giá cả |
| Giá mỗi máy chủ (kết nối không giới hạn) |
| Hỗ trợ cộng đồng |
| Hỗ trợ chuyên nghiệp, mỗi máy chủ |
| Công cụ khôi phục, giám sát, trace/kiểm toán, tối ưu hóa, sao chép gốc |
Liên hệ với chúng tôi
Bạn có câu hỏi nào không? Đừng ngần ngại liên hệ với chúng tôi qua email!