Tối ưu và di chuyển cơ sở dữ liệu – dự án thực tế

Những ví dụ này thể hiện nhiều loại công việc thuộc dịch vụ phát triển, tối ưu và di chuyển cơ sở dữ liệu của tôi: thiết kế cấu trúc, tăng tốc PostgreSQL, xây dựng truy vấn và thủ tục MySQL nâng cao, xử lý dữ liệu tự động và thiết lập môi trường SQL Server.

Cơ sở dữ liệu vận động viên, kết quả và giải đấu

Thực hiện trong quý II năm 2023, bổ sung trong quý II năm 2024.

Cơ sở dữ liệu vận động viên, cuộc đua và kết quả được kết nối với các mô-đun Joomla

Vấn đề

Liên đoàn bơi ngoài trời Serbia quản lý các cuộc thi trên một website Joomla hiện có, nhưng dữ liệu về vận động viên, cuộc đua, kết quả và giải đấu chưa được kết nối thành một hệ thống thống nhất. Việc đăng ký vận động viên, tính điểm và hiển thị các cuộc thi trước đây cũng như hiện tại đòi hỏi thao tác thủ công; bằng khen và thông báo cũng phải chuẩn bị riêng.

Giải pháp

Mục tiêu là xây dựng cơ sở dữ liệu giúp quản lý hiệu quả các cuộc thi, kết quả và toàn bộ thông tin liên quan, đồng thời tích hợp vào website Joomla hiện có qua các mô-đun được phát triển theo yêu cầu:

  • cơ sở dữ liệu cho vận động viên, cuộc đua, kết quả, giải đấu và các hồ sơ liên quan khác;
  • mô-đun Joomla để hiển thị kết quả, tính điểm, biên bản và báo cáo;
  • cải tiến phần đăng ký vận động viên cho các cuộc đua sắp tới;
  • mẫu HTML cho bằng khen và email;
  • tích hợp với hệ thống Joomla hiện có mà không phải chuyển sang website mới;
  • kết nối với hệ thống CacaTajka để quản lý dữ liệu.

Công nghệ sử dụng

Kết quả

Việc tính điểm được tự động hóa qua các cơ sở dữ liệu liên kết, quy trình đăng ký cuộc đua được cải tiến, còn các cuộc thi trước đây và hiện tại được hiển thị trên website từ cùng một nguồn dữ liệu.

Nhận xét của khách hàng

★★★★★5/5

“Dejan Dozet đã làm việc trên website của Liên đoàn bơi ngoài trời Serbia, cải tiến phần đăng ký vận động viên cho các cuộc đua sắp tới và tự động hóa toàn bộ việc tính điểm bằng cách kết nối cơ sở dữ liệu và hiển thị các cuộc thi trước đây cũng như hiện tại. Chúng tôi hết sức khen ngợi kết quả, sự tận tâm và tính chuyên nghiệp trong công việc!!!”


Tối ưu cơ sở dữ liệu PostgreSQL

Thực hiện trong quý III năm 2022, bổ sung trong quý IV năm 2022.

Vấn đề

Công ty của khách hàng sử dụng một cơ sở dữ liệu PostgreSQL được tùy chỉnh cho các nhu cầu vận hành riêng. Mọi chức năng đều đáp ứng yêu cầu, nhưng tốc độ và khả năng phản hồi còn kém. Cơ sở dữ liệu chạy trên máy chủ chuyên dụng và tình trạng chậm trong quá trình làm việc ngày càng trở nên rõ rệt.

Giải pháp

Mục tiêu là giữ nguyên toàn bộ chức năng và giao diện hiện có, đồng thời cải thiện tốc độ và độ phản hồi:

  • phân tích hiệu năng: sử dụng các công cụ chẩn đoán dành cho PostgreSQL để tìm những phần gây chậm hệ thống;
  • tối ưu truy vấn SQL: tinh chỉnh các truy vấn phức tạp và lập chỉ mục cho các cột quan trọng để lấy dữ liệu nhanh hơn;
  • cấu hình ở cấp máy chủ: điều chỉnh cấu hình PostgreSQL trên máy chủ chuyên dụng để cơ sở dữ liệu hoạt động tối ưu;
  • thay đổi kiến trúc dữ liệu: thực hiện các thay đổi có mục tiêu trong cấu trúc dữ liệu mà không ảnh hưởng chức năng cốt lõi;
  • giữ nguyên giao diện: toàn bộ cải tiến được thực hiện phía sau, còn giao diện người dùng nhìn thấy vẫn như cũ.

Công nghệ sử dụng

  • PostgreSQL: cơ sở dữ liệu quan hệ được tối ưu.
  • PgAdmin và các công cụ chẩn đoán khác: phân tích hiệu năng và tối ưu hóa.
  • Công cụ cấu hình máy chủ: tinh chỉnh máy chủ chuyên dụng cho PostgreSQL.

Kết quả

Cơ sở dữ liệu được tối ưu ở cấp truy vấn, chỉ mục, cấu trúc và máy chủ; người dùng vẫn giữ nguyên giao diện và cách làm việc.


Truy vấn và thủ tục MySQL cho khoa học dữ liệu

Thực hiện trong quý IV năm 2022, bổ sung trong quý III năm 2023.

Vấn đề

Khách hàng phát triển một ứng dụng khoa học dữ liệu để phân tích hiệu quả của các bất động sản cho thuê nghỉ dưỡng ngắn hạn, với mục tiêu cuối cùng là dự đoán loại nhà nào mang lại kết quả tốt nhất. Đội ngũ kỹ thuật, do nhà sáng lập công ty đồng thời là kỹ sư cơ sở dữ liệu dẫn dắt, cần thêm hỗ trợ cho các truy vấn nâng cao và những công việc họ chưa có thời gian hoàn thành. Mô tả nhiệm vụ cũng cho thấy có những yêu cầu phức tạp hơn.

Giải pháp

Mục tiêu là cải tiến ứng dụng bằng các truy vấn và thủ tục MySQL nâng cao, cho phép hiểu sâu hơn về hiệu quả của bất động sản và chuẩn bị dữ liệu cho dự đoán:

  • thủ tục lưu trữ sử dụng truy vấn CTE Update để phân loại bản ghi theo hiệu quả thành tứ phân vị và thập phân vị;
  • truy vấn hiệu quả được viết cùng với các chỉ mục đặt cẩn thận để tăng hiệu năng;
  • bảng báo cáo tĩnh được chuẩn bị để ứng dụng web đọc với tốc độ cao.

Công nghệ sử dụng

  • MySQL: hệ quản trị cơ sở dữ liệu dùng để xây dựng truy vấn nâng cao, thủ tục lưu trữ và tối ưu hiệu năng ứng dụng.

Kết quả

Ứng dụng nhận được dữ liệu đã phân loại theo hiệu quả và các bảng báo cáo sẵn sàng để đọc nhanh, tạo nền tảng cho việc so sánh bất động sản và dự đoán.


Thống kê SQL về doanh thu theo mùa trong ngành dịch vụ lưu trú

Thực hiện trong quý IV năm 2020, bổ sung trong quý II năm 2021.

Vấn đề

Khách hàng có dữ liệu doanh thu hằng tháng của nhiều cơ sở, được sắp xếp theo cơ sở và tháng, nhưng cần xem dữ liệu theo mùa. Thách thức là cộng và nhóm dữ liệu sao cho doanh thu tháng được đưa chính xác vào từng mùa tương ứng, cùng một số chi tiết phức tạp hơn không được nêu rõ trong mô tả công việc.

Giải pháp

Mục tiêu là xây dựng một thủ tục SQL phân loại và cộng doanh thu tháng theo nhóm mùa, từ đó cho phép phân tích nâng cao:

  • nhóm dữ liệu: doanh thu hằng tháng của các cơ sở và tháng khác nhau được gom thành các khối mùa hoàn chỉnh;
  • xử lý tự động: thủ tục tự chạy không cần can thiệp thủ công, giúp dữ liệu luôn được cập nhật và phân tích;
  • khả năng mở rộng: thủ tục tiếp nhận thêm cơ sở mới và khoảng thời gian dữ liệu dài hơn.

Công nghệ sử dụng

Kết quả

Thống kê theo mùa được tạo bằng một quy trình có thể lặp lại và mở rộng cùng dữ liệu; khách hàng đã hoàn thành các nhiệm vụ theo kế hoạch.

Nhận xét của khách hàng

★★★★★5/5

“Dejan là một thành viên vô giá trong đội ngũ của chúng tôi, làm việc với các truy vấn và thủ tục cơ sở dữ liệu phức tạp. Chúng tôi đã hoàn thành những nhiệm vụ dự kiến và sẽ tiếp tục thuê anh ấy!”


Tự động thiết lập SQL Server

Thực hiện trong quý IV năm 2020, bổ sung trong quý III năm 2021.

Vấn đề

Khách hàng cần cài đặt SQL Server phiên bản Developer ở chế độ im lặng, không phải thao tác qua các màn hình cài đặt, và hệ thống phải sẵn sàng hoạt động ngay: SQL Server Agent được bật và hồ sơ gửi email từ cơ sở dữ liệu được tạo. Máy chủ chỉ được truy cập qua một tài khoản xác thực SQL duy nhất, còn thông tin SMTP sẽ được nhập sau.

Giải pháp

Một tập lệnh C# đã được xây dựng để tự động hóa toàn bộ quy trình thiết lập:

  • cài đặt im lặng SQL Server Developer ở chế độ nền, không cần thao tác thủ công;
  • bật SQL Server Agent ngay trong quá trình thiết lập;
  • hồ sơ Database Mail được tạo và sẵn sàng để nhập thông tin SMTP sau;
  • quyền truy cập hạn chế: máy chủ chỉ có thể truy cập qua tài khoản xác thực SQL đã định.

Công nghệ sử dụng

Kết quả

SQL Server cho môi trường phát triển được thiết lập nhất quán mỗi lần, với Agent đã bật, hồ sơ email đã chuẩn bị và quyền truy cập được giới hạn.


Nghiên cứu riêng: di chuyển GeoPackage sang SQL Server

Việc di chuyển dữ liệu không gian địa lý có mục tiêu kỹ thuật và tìm kiếm riêng nên được giữ thành một nghiên cứu tình huống độc lập. Ứng dụng C# đã phát triển chuyển dữ liệu từ các tệp GeoPackage (.gpkg) dựa trên SQLite sang Microsoft SQL Server, đồng thời xử lý nhiều kiểu dữ liệu không gian địa lý, kiểm tra tính toàn vẹn và ghi nhận lỗi.

Xem toàn bộ nghiên cứu về việc di chuyển cơ sở dữ liệu GeoPackage sang SQL Server.

Nếu bạn cần thiết kế cấu trúc mới, tăng tốc truy vấn hiện có hoặc chuyển dữ liệu an toàn, hãy xem dịch vụ phát triển và tối ưu cơ sở dữ liệu.