Oracle to Postgres, sự trỗi dậy của bầy voi!

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Nay ngồi buồn nghĩ về quãng thời gian cày bừa với các dự án convert database (từ Oracle sang Postgres). Muốn chia sẻ chút kinh nghiệm nhỏ nhoi trên mặt này tới các bạn.

  Cài đặt PostgreSQL server sử dụng Docker
  Chạy Postgresql trong Docker container

Bản thân mình đã từng làm cho 2 doanh nghiệp CNTT của Nhật Bản, đã kinh qua 6 dự án Convert Database. Nhận thấy:

  • Trong khoảng 5 năm trở lại đây, ngày có càng nhiều doanh nghiệp nhỏ và vừa chuyển đổi các phần mềm, ứng dụng của họ từ Oracle Database sang Postgres Database.
  • Việc chuyển đổi này đa phần đến từ các dự án cũ của doanh nghiệp Nhật Bản với quy mô không quá lớn. Trường hợp này sử dụng Postgres DB là hợp lý. 
  • Dự án convert kiểu này thường không mấy HÀO HỨNG cho lập trình viên (khá chán).
  • Công nghệ sử dụng hầu hết là JDBC, rất hiếm có dự án nào sử dụng MyBatis hay Hibernate.
Đã từng hay chưa?

Nguyên nhân của việc chuyển đổi này là từ đâu?. Không thể bỗng nhiên những doanh nghiệp Nhật (vốn yêu thích sự ổn định, sử dụng phần mềm lâu dài), lại bỗng nhiên thực hiển chuyển đổi Database (việc làm vốn dĩ tiềm ẩn nhiều rủi ro).

Bài viết này sẽ phân tích về nguyên nhân sâu xa của vấn đề này.

1. Oracle – chi phí đắt đỏ.

1.1 Named User Plus (chi phí trên từng user).

Lý do đầu tiên và cũng là lý do quan trọng nhất – ĐẮT. Oracle Database thực sự đắt đỏ, khác hẳn với Postgres Database miễn phí. Nếu ứng dụng hoặc phần mềm của chúng ta chỉ sử dụng để đáp ứng cho một lượng nhỏ người dùng, không yêu cầu realtime, … thì việc bỏ tiền để sử dụng Oracle database là khá đắt đỏ.

The price of acquisition and product support for Oracle database is high and we need to pay in addition for every extra feature we need which is having the high price. So TCO is high for Oracle database.

Giá cả để sử dụng và hỗ trợ đối với Oracle database là tương đối cao, chúng ta cần trả thêm tiền cho việc thêm tính năng. Vì vây, TCO (total cost of ownership) là tương đối cao cho việc sử dụng Oracle database.

Oracle database chi phí đắt đỏ hơn nhiều so với Postgres database.Chỉ với phiên bản tiêu chuẩn (standard edition) và tính theo số lương người dùng (Named User Plus), người sử dụng cũng đã phải bỏ ra 350$ (Thêm support và update là 77$). Đây là một con số không hề nhỏ.

1.2 Customer supprot và security.

Phải chăng bỏ tiền mua support là đã xong. Có vấn đề khi nào thì gọi support khi đó?. Cứ có vấn đề là rên?. Câu trả lời là ĐÉO!.

Customer support for Oracle database is not free; it is almost one-fourth of the license cost and increases 3 to 5 % annually.

Hỗ trợ khách hàng của Oracle database là đéo hề miễn phí. Cỡ khoảng 1/4 chi phí của license, và đm, tăng thêm 3%, 5% mỗi năm. Ẹc.

Trời đụ, vậy chắc OCD phải an toàn hơn rồi!. Tất nhiên, nhưng vẫn phải ói thêm tiền.

Oracle database has more security or advanced security but we need to purchase as part of the editions provided by Oracle corporation which have some features that protect the database.

Oracle database an toàn hơn nhiều, tuy nhiên chúng ta cần thanh toán thêm. Cái này như là một phần tính năng mở rộng. Thêm một vài tính năng để bảo về Database.

Thêm tính năng (advanced security) cho mỗi user sử dụng, cũng đồng nghĩa với 300 cành cọ cất cánh bay.

2. Postgres – miễn phí, ai chả thích.

Ui chà, MIỄN PHÍ. Đối với những doanh nghiệp vừa và nhỏ, tiết kiệm được chi phí phải trả cho database thật là một sự lựa chọn hoàn hảo.

Chính vì vậy, càng ngày có càng nhiều doanh nghiệp Nhật thực hiện chuyển đổi database từ Oracle sang Postgres (hầu hết là các dự án outsource – quy mô dự án không quá lớn).

As PostgreSQL is open-source there is no fee for acquisition and product support which are absolutely free of cost. We can get all the available features of PostgreSQL database for free as it is open-source.

PostgreSQL là mã nguồn mở, vì vậy không có bất cứ chi phí nào , product support cũng hoàn toàn miễn phí. Tất cả các tính năng của PostgreSQL database đều là miễn phí.

Postgres Databse là miễn phí, có thể donate để phát triển hệ cơ sở dữ liệu này.Postgresql Database là miễn phí. Vì vậy, chỉ có thể đóng góp (donate) để phát triển hệ cơ sở dữ liệu này. Theo mình dự đoán thì số lượng tiền donate cho postgresql là không hề nhỏ.

3. Sức mạnh của những chú voi.

Khi phải rời xa Oracle đắt đỏ, các doanh nghiệp thường phải đau đầu lựa chọn giữa Postgres và MySQL. Tất nhiên, hiện tại thì postgres đã có mặt khắp mọi nơi rồi.

3.1 SQL.

  • Windowing functions and analytics (OVER-clause) – Hàm và thống kê (sử dụng OVER)
  • Ordered sets (WITHIN GROUP) – Lựa chọn sắp xếp (với GROUP).
  • Hypothetical aggregates (WITHIN GROUP).
  • Recursive SQL (WITH RECURSIVE) – SQL đệ quy.
  • Partial aggregates (FILTER-clause) – Tách từng phần ra thành tập hợp.
  • Table sampling – Bảng mẫu.

3.1 Performance – Hiệu năng.

  • Parallel queries – Queries đa luồng (nhiều câu query chạy đồng thời).
  • Advanced locking mechanisms – Cơ chế khóa bổ sung cho từng bảng.
  • Many different types of indexes (btree, gist, gin, hash. sp-gist, brin, bloom, etc.) – Rất nhiều kiểu indexs (sử dụng để tăng tốc query).
  • Advanced cost-based query optimization – tối ưu hóa query dự.
  • Tablespaces
  • Partitioned tables – Tạo bảng phân vùng.
  • Synchronous and asynchronous COMMIT – COMMIT dựa trên cơ chế đồng bộ và bất đồng bộ.

Tiện nói luôn chút xíu về cơ chế COMMIT Synchronous (đồng bộ) của postgres. Cơ chế này đảm bảo rằng dữ liệu trước khi thực hiện commit sẽ được lưu vào ÍT NHẤT là 2 nodes. Việc này đảm bảo không xảy ra mất mát dữ liệu. Thực hiện đồng bộ đồng thời cũng phải đánh đổi về mặt hiệu suất (phải chờ để được commit).

Cơ chế commit đồng bộ trên Postgres.

3.3 Security.

  • Users, roles, etc.
  • Full support for SSL – Hỗ trợ cho SSL (Secure Socker Layer).
  • Full database encryption (with “Cybertec PostgreSQL_fde”) – Cơ chế mã hóa an toàn.
  • Support for single-sign-on (ActiveDirectory, LDAP, RADIUS, etc.)

3.4 Store Procedures.

  • Support for stored procedures in various languages.
  • Support for custom aggregates – hỗ trợ tùy chỉnh.
  • Professional triggers – sử dụng triggers (cơ chế bắt sự kiện trên table).

4. Kết luận.

Mong rằng bài viết này đã cho các bài một cái nhìn tổng quan về việc chuyển đổi cơ sở dữ liệu từ Oracle sang Postgres, nguyên nhân của việc chuyển đổi này.

Sẽ còn nhiều vấn đề để bàn về sự khác biệt giữa Oracle DB hay Postgres DB. Tuy nhiên, những vấn đề chuyên sâu này sẽ được viết ở các bài viết tiếp theo.

Hãy cố gắng để sử dụng Postgres một cách thuần thục như cách mà ta trộm nó (trộm gì khi nó là miễn phí =))).

5. Tham khảo.

Bài viết gốc được đăng tải tại kieblog.vn

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev