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

Công Nghệ
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 Databas e. 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...

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.

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.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.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 Station D

Bài viết liên quan

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bài viết được sự cho phép của tác giả Chung Nguyễn Hôm nay, nhóm Laravel đã phát hành một phiên bản chính mới của “ laravel/installer ” bao gồm hỗ trợ khởi động nhanh các dự án Jetstream. Với phiên bản mới này khi bạn chạy laravel new project-name , bạn sẽ nhận được các tùy chọn Jetstream. Ví dụ: API Authentication trong Laravel-Vue SPA sử dụng Jwt-auth Cách sử dụng Laravel với Socket.IO laravel new foo --jet --dev Sau đó, nó sẽ hỏi bạn thích stack Jetstream nào hơn: Which Jetstream stack do you prefer? [0] Livewire [1] inertia > livewire Will your application use teams? (yes/no) [no]: ... Nếu bạn đã cài bộ Laravel Installer, để nâng cấp lên phiên bản mới bạn chạy lệnh: composer global update Một số trường hợp cập nhật bị thất bại, bạn hãy thử, gỡ đi và cài đặt lại nha composer global remove laravel/installer composer global require laravel/installer Bài viết gốc được đăng tải tại chungnguyen.xyz Có thể bạn quan tâm: Cài đặt Laravel Làm thế nào để chạy Sql Server Installation Center sau khi đã cài đặt xong Sql Server? Quản lý các Laravel route gọn hơn và dễ dàng hơn Xem thêm Tuyển dụng lập trình Laravel hấp dẫn trên Station D

By stationd
Principle thiết kế của các sản phẩm nổi tiếng

Principle thiết kế của các sản phẩm nổi tiếng

Tác giả: Lưu Bình An Phù hợp cho các bạn thiết kế nào ko muốn làm code dạo, design dạo nữa, bạn muốn cái gì đó cao hơn ở tầng khái niệm Nếu lập trình chúng ta có các nguyên tắc chung khi viết code như KISS , DRY , thì trong thiết kế cũng có những nguyên tắc chính khi làm việc. Những nguyên tắc này sẽ là kim chỉ nam, nếu có tranh cãi giữa các member trong team, thì cứ đè nguyên tắc này ra mà giải quyết (nghe hơi có mùi cứng nhắc, mình thì thích tùy cơ ứng biến hơn) Tìm các vị trí tuyển dụng designer lương cao cho bạn Nguyên tắc thiết kế của GOV.UK Đây là danh sách của trang GOV.UK Bắt đầu với thứ user cần Làm ít hơn Thiết kế với dữ liệu Làm mọi thứ thật dễ dàng Lặp. Rồi lặp lại lần nữa Dành cho tất cả mọi người Hiểu ngữ cảnh hiện tại Làm dịch vụ digital, không phải làm website Nhất quán, nhưng không hòa tan (phải có chất riêng với thằng khác) Cởi mở, mọi thứ tốt hơn Bao trừu tượng luôn các bạn, trang Gov.uk này cũng có câu tổng quát rất hay Thiết kế tốt là thiết kế có thể sử dụng. Phục vụ cho nhiều đối tượng sử dụng, dễ đọc nhất nhất có thể. Nếu phải từ bỏ đẹp tinh tế – thì cứ bỏ luôn . Chúng ta tạo sản phẩm cho nhu cầu sử dụng, không phải cho người hâm mộ . Chúng ta thiết kế để cả nước sử dụng, không phải những người đã từng sử dụng web. Những người cần dịch vụ của chúng ta nhất là những người đang cảm thấy khó sử dụng dịch...

By stationd
Hiểu về trình duyệt – How browsers work

Hiểu về trình duyệt – How browsers work

Bài viết được sự cho phép của vntesters.com Khi nhìn từ bên ngoài, trình duyệt web giống như một ứng dụng hiển thị những thông tin và tài nguyên từ server lên màn hình người sử dụng, nhưng để làm được công việc hiển thị đó đòi hỏi trình duyệt phải xử lý rất nhiều thông tin và nhiều tầng phía bên dưới. Việc chúng ta (Developers, Testers) tìm hiểu càng sâu tầng bên dưới để nắm được nguyên tắc hoạt động và xử lý của trình duyệt sẽ rất hữu ích trong công việc viết code, sử dụng các tài nguyên cũng như kiểm thử ứng dụng của mình. Cách để npm packages chạy trong browser Câu hỏi phỏng vấn mẹo về React: Component hay element được render trong browser? Khi hiểu được cách thức hoạt động của trình duyệt chúng ta có thể trả lời được rất nhiều câu hỏi như: Tại sao cùng một trang web lại hiển thị khác nhau trên hai trình duyệt? Tại sao chức năng này đang chạy tốt trên trình duyệt Firefox nhưng qua trình duyệt khác lại bị lỗi? Làm sao để trang web hiển thị nội dung nhanh và tối ưu hơn một chút?… Hy vọng sau bài này sẽ giúp các bạn có một cái nhìn rõ hơn cũng như giúp ích được trong công việc hiện tại. 1. Cấu trúc của một trình duyệt Trước tiên chúng ta đi qua cấu trúc, thành phần chung và cơ bản nhất của một trình duyệt web hiện đại, nó sẽ gồm các thành phần (tầng) như sau: Thành phần nằm phía trên là những thành phần gần với tương tác của người dùng, càng phía dưới thì càng sâu và nặng về xử lý dữ liệu hơn tương tác. Nhiệm...

By stationd
Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Lĩnh vực EdTech (ứng dụng công nghệ vào các sản phẩm giáo dục) trên toàn cầu hiện nay đã tương đối phong phú với nhiều tên tuổi lớn phân phối đều trên các hạng mục như Broad Online Learning Platforms (nền tảng cung cấp khóa học online đại chúng – tiêu biểu như Coursera, Udemy, KhanAcademy,…) Learning Management Systems (hệ thống quản lý lớp học – tiêu biểu như Schoology, Edmodo, ClassDojo,…) Next-Gen Study Tools (công cụ hỗ trợ học tập – tiểu biểu như Kahoot!, Lumosity, Curriculet,…) Tech Learning (đào tạo công nghệ – tiêu biểu như Udacity, Codecademy, PluralSight,…), Enterprise Learning (đào tạo trong doanh nghiệp – tiêu biểu như Edcast, ExecOnline, Grovo,..),… Hiện nay thị trường EdTech tại Việt Nam đã đón nhận khoảng đầu tư khoảng 55 triệu đô cho lĩnh vực này nhiều đơn vị nước ngoài đang quan tâm mạnh đến thị trường này ngày càng nhiều hơn. Là một trong những xu hướng phát triển tốt, và có doanh nghiệp đã hoạt động khá lâu trong ngành nêu tại infographic như Topica, nhưng EdTech vẫn chỉ đang trong giai đoạn sơ khai tại Việt Nam. Tại Việt Nam, hệ sinh thái EdTech trong nước vẫn còn rất non trẻ và thiếu vắng nhiều tên tuổi trong các hạng mục như Enterprise Learning (mới chỉ có MANA), School Administration (hệ thống quản lý trường học) hay Search (tìm kiếm, so sánh trường và khóa học),… Với chỉ dưới 5% số dân công sở có sử dụng một trong các dịch vụ giáo dục online, EdTech cho thấy vẫn còn một thị trường rộng lớn đang chờ được khai phá. *** Vừa qua Station D đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công...

By stationd