Thật là bận rộn trong vài tháng khi chúng tôi làm việc hướng tới việc hợp nhất Postgres-XL với bản phát hành mới nhất và tốt nhất của PostgreSQL. Postgres-XL là một nhánh mã nguồn mở của PostgreSQL cung cấp một nền tảng có thể mở rộng cho OLTP và Business Intelligence. Bản phát hành hiện tại của Postgres-XL dựa trên PostgreSQL 9.2, do đó, nó thiếu tất cả các cải tiến được thực hiện cho PostgreSQL trong ba năm qua.
2ndQuadrant và các công ty khác đang làm việc để đưa khả năng mở rộng phân tán vào lõi PostgreSQL cũng như xây dựng các công cụ và tiện ích mở rộng bên ngoài lõi. Là một phần của điều đó, Postgres-XL có một số tính năng mà chúng tôi muốn đưa trở lại vào cốt lõi của PostgreSQL, vì vậy, 2ndQuadrant đã chọn nhiệm vụ cập nhật cơ sở mã Postgres-XL lên bản phát hành PostgreSQL mới nhất như bước đầu tiên. Sau hơn 3 tháng làm việc, PostgreSQL 9.5 vẫn đang trong giai đoạn alpha, vì vậy chúng tôi muốn đưa ra một báo cáo tiến độ về cách công việc đang tiến hành. Tôi cũng cần phải nói những lời kỳ diệu:Công việc đang diễn ra trên Postgres-XL này là một phần của dự án AXLE, được tài trợ bởi Liên minh Châu Âu theo thỏa thuận tài trợ 318633.
Chuẩn bị cho việc hợp nhất
Vì PostgreSQL và Postgres-XL đều sử dụng GIT làm hệ thống kiểm soát nguồn, nó làm cho quá trình hợp nhất đơn giản hơn nhiều vì GIT cung cấp nhiều công cụ để hỗ trợ quá trình. Nhưng ngay sau khi thử hợp nhất, chúng tôi đã gặp phải rào cản đầu tiên.
Chúng tôi nhận ra rằng kho lưu trữ Postgres-XL hiện tại dựa trên bản phát hành PostgreSQL 9.2 dành cho trẻ nhỏ cũ hơn. Điều đó có nghĩa là đã có các cam kết và thay đổi trong nhánh chính Postgres-XL chưa bao giờ được thực hiện đối với nhánh chính của PostgreSQL hoặc có các id cam kết khác nhau. Vì vậy, việc hợp nhất với nhánh chính PostgreSQL đã gây ra nhiều xung đột hơn những gì chúng ta mong đợi khác. Vì vậy, nhiệm vụ đầu tiên chúng ta phải hoàn thành là căn cứ lại kho lưu trữ Postgres-XL 9.2 trên một điểm cam kết sau này. Điều này rõ ràng là yêu cầu bước cẩn thận, đảm bảo rằng không có gì bị hỏng trong quá trình này. Khi chúng tôi đã hoàn tất quá trình rebase cơ bản, chúng tôi cũng hợp nhất tất cả các bản sửa lỗi và cải tiến của Postgres-XL, tạo một nhánh ổn định Postgres-XL 9.2 và hợp nhất nhánh 9.2 với bản phát hành nhỏ PostgreSQL 9.2 mới nhất hiện có.
Những thách thức phải đối mặt trong quá trình hợp nhất
Việc hợp nhất thực tế với nhánh chính của PostgreSQL cũng không phải là một nhiệm vụ dễ dàng. Lưu ý rằng chúng tôi đã chuyển 3 bản phát hành chính của PostgreSQL, gần như chiếm 3 năm phát triển. Rất may, git-mergetool rất tiện dụng cho các hợp nhất quy mô lớn như vậy. Bạn có thể sử dụng trình soạn thảo yêu thích của mình (trong trường hợp của chúng tôi là vimdiff) để xem các xung đột hợp nhất một cách độc đáo và giải quyết chúng. Trong khi một số xung đột là đơn giản và cần điều chỉnh nhỏ, nhiều xung đột yêu cầu đọc và hiểu kỹ mã. Mặc dù hỗ trợ tất cả các tính năng mới không phải là chuyện nhỏ, nhưng chúng tôi đã cố gắng duy trì nhiều nhất có thể và chúng tôi đã khá thành công.
Thách thức lớn khác là hợp nhất các thay đổi trong tài liệu. Vì dự án Postgres-XL đã tạo một bản sao của tài liệu SGML hiện có, việc hợp nhất GIT với nhánh chính không mang lại bất kỳ cập nhật nào cho bản sao. Hợp nhất thủ công bắt buộc này. Để đảm bảo rằng điều này không cần thiết nữa trong các lần hợp nhất trong tương lai, chúng tôi hiện thực hiện các thay đổi tài liệu tại chỗ.
Tiếp theo là gì?
Có rất nhiều thứ cần được hoàn thành trước khi chúng tôi có thể phát hành Postgres-XL 9.5 ra công chúng:
- Nâng cao phạm vi kiểm tra hồi quy cho Postgres-XL
- Sửa lỗi và thêm hỗ trợ cho các tính năng mới
- Thực hiện các bài kiểm tra hiệu suất có hệ thống và điều chỉnh
- Tạo nhánh Postgres-XL 9.5 và hợp nhất với nhánh ổn định PostgreSQL 9.5 mới nhất
Chúng tôi chưa sẵn sàng để đánh giá Postgres-XL, nhưng chúng tôi hy vọng Postgres-XL 9.5 Beta sẽ sẵn sàng vào cùng thời điểm với PostgreSQL 9.5 Beta.
Tìm bài đăng blog tiếp theo của tôi sau khoảng một tháng để có bản cập nhật tiếp theo.