Lê Thảo Ngọc -Lớp K22HTTTB i DANH MỤC CÁC TỪ VIẾT TẮT FPTS FPT securities Công ty cổ phần chứng khoán FPT IMDB Database In-memory Cơ sở dữ liệu trên bộ nhớ SGA System Global Area Vùng b
TỔNG QUAN
Giới thiệu về công ty Cổ phần chứng khoán FPT
Công ty Cổ phần chứng khoán FPT (FPTS) là một thành viên của Tập đoàn FPT, được thành lập và hoạt động theo Giấy phép của Ủy ban Chứng khoán Nhà nước cấp ngày 13/07/2007 FPTS cung cấp các dịch vụ như môi giới chứng khoán, tự doanh chứng khoán, tư vấn đầu tư chứng khoán, lưu ký chứng khoán và bảo lãnh phát hành chứng khoán.
Trụ sở chính của Công ty Cổ phần chứng khoán FPT hiện tọa lạc tại số 52 đường Lạc Long Quân, quận Tây Hồ, thành phố Hà Nội, nơi tôi đã thực tập trong thời gian qua Tôi đảm nhiệm vị trí nhân viên Quản trị cơ sở dữ liệu (DBA) tại Trung tâm công nghệ của công ty.
FPTS là công ty chứng khoán hàng đầu trong lĩnh vực tiền tệ, với khối lượng dữ liệu lớn cần bảo mật cao Là thành viên của tập đoàn FPT, công ty cam kết nâng cao hệ thống công nghệ thông tin, trong đó cơ sở dữ liệu chứng khoán đóng vai trò quan trọng trong việc lưu trữ và quản lý dữ liệu Do đó, việc giám sát và quản trị cơ sở dữ liệu hiện tại, cùng với nghiên cứu phát triển công nghệ mới để bảo mật thông tin và cải thiện hiệu suất hệ thống, là nhiệm vụ hàng đầu của nhân viên quản trị cơ sở dữ liệu tại FPTS.
Giới thiệu đề tài
Hệ thống cơ sở dữ liệu của Công ty Cổ phần Chứng khoán FPT hiện đang sử dụng mô hình giao dịch trực tuyến (OLTP), chủ yếu để xử lý giao dịch trực tuyến Tuy nhiên, trong quá trình hoạt động, hệ thống thường gặp phải tình trạng quá tải, dẫn đến độ trễ và tắc nghẽn trong các hoạt động như báo cáo tài sản cuối ngày, báo cáo giá trị giao dịch hàng tháng và chốt số dư tài khoản Những vấn đề này gây khó khăn cho việc xuất dữ liệu theo thời gian thực, ảnh hưởng đến tốc độ và hiệu suất tổng thể của cơ sở dữ liệu Đặc biệt, trong bối cảnh thị trường đang hồi phục sau giai đoạn Covid, việc quản trị cơ sở dữ liệu chứng khoán càng trở nên quan trọng hơn bao giờ hết.
Lê Thảo Ngọc - Lớp K22HTTTB 5 nghiên cứu công nghệ In-memory Database (IMDB) như một giải pháp tối ưu hóa tốc độ báo cáo mà không ảnh hưởng đến giao dịch khác trong cơ sở dữ liệu Đề tài sẽ làm rõ khái niệm, kiến trúc, cơ chế hoạt động và ứng dụng của IMDB, đồng thời so sánh với các công nghệ cơ sở dữ liệu phổ biến khác Mục tiêu là cung cấp cái nhìn rõ ràng và tìm ra hướng đi hiệu quả để cải thiện hiệu suất hoạt động cho cơ sở dữ liệu tại công ty cổ phần chứng khoán FPT.
Tổng quan về Oracle Database In-Memory (IMDB)
1.3.1 Tìm hiểu về định dạng cột và định hạng hàng
Trong cơ sở dữ liệu, dữ liệu được định dạng ở hai dạng: row format (định dạng hàng) và column format (định dạng cột)
Định dạng hàng (Row Format) là phương thức lưu trữ dữ liệu theo từng hàng trên đĩa Mỗi bản ghi trong bảng sẽ được biểu diễn thành một hàng mới trong bảng lưu trữ, giúp tổ chức dữ liệu một cách có hệ thống và dễ dàng truy xuất.
Ví dụ với bảng “Khách hàng” như sau:
Mã khách hàng Tên khách hàng Chi nhánh
Khi được lưu dưới dạng hàng, dưới đĩa sẽ có dạng như sau:
N0023 Trần Tuấn Anh HN N0024 Phạm Thu Hương HCM
Lê Thảo Ngọc -Lớp K22HTTTB 6
Column format - định dạng cột
Khác với định dạng hàng, định dạng cột lưu trữ dữ liệu theo từng cột trong bảng Mỗi trường dữ liệu ban đầu sẽ được biểu diễn dưới dạng hàng trong bảng lưu trữ, giúp tối ưu hóa việc truy xuất và quản lý dữ liệu.
Với bảng “Khách hàng” ở trên, nếu lưu trữ ở định dạng cột, ta sẽ thu được kết quả dưới disk như sau:
N0023 N0024 Trần Tuấn Anh Phạm Thu Hương HN HCM
Với định dạng hàng, cơ sở dữ liệu truy vấn và quét tất cả các hàng trong bảng, trong khi định dạng cột chỉ quét và truy vấn các cột cần thiết, giúp tối ưu hóa hiệu suất và tiết kiệm thời gian xử lý dữ liệu.
Định dạng hàng và định dạng cột là hai phương thức lưu trữ truyền thống trong cơ sở dữ liệu, mỗi loại có những ưu điểm riêng Định dạng hàng rất hiệu quả cho các hoạt động DML như insert, update và delete, vì tất cả các cột trong một bản ghi được lưu trữ nguyên vẹn trong bộ nhớ Điều này không chỉ giúp việc tìm kiếm và phát hiện bản ghi trở nên dễ dàng hơn, mà còn cho phép thực hiện các thao tác sửa đổi, xóa hoặc thêm mới một cách nhanh chóng, chỉ cần thêm vào cuối hàng dữ liệu hiện có.
Lê Thảo Ngọc -Lớp K22HTTTB 7
Lưu trữ dữ liệu ở định dạng cột không phải là lợi thế, vì nó yêu cầu cơ sở dữ liệu phải quét toàn bộ dữ liệu để xác định và thực hiện xử lý chính xác cho từng vị trí trong bản ghi.
Định dạng cột mang lại hiệu quả cao cho các hoạt động phân tích, thống kê và báo cáo Ví dụ, khi cần lấy báo cáo tổng số chi nhánh từ bảng "Khách hàng", việc lưu trữ dữ liệu ở định dạng cột cho phép cơ sở dữ liệu chỉ quét phần dữ liệu liên quan đến chi nhánh, thay vì phải quét toàn bộ dữ liệu như ở định dạng hàng Điều này giúp tăng tốc độ báo cáo và tiết kiệm bộ nhớ.
Cả hai định dạng lưu trữ trong cơ sở dữ liệu, bao gồm định dạng hàng và định dạng cột, đều có những ưu và nhược điểm riêng Trong khi định dạng hàng mang lại tốc độ nhanh hơn cho các giao dịch, định dạng cột lại tối ưu hóa tốc độ cho phân tích dữ liệu Thông thường, cơ sở dữ liệu chỉ áp dụng một trong hai phương thức lưu trữ này, dẫn đến việc chỉ một trong hai lợi ích được đáp ứng: hoặc phục vụ cho các hoạt động OLTP, hoặc hỗ trợ cho các hoạt động OLAP.
Hệ thống cơ sở dữ liệu của công ty cổ phần chứng khoán FPT hiện đang sử dụng mô hình OLTP với dữ liệu được lưu trữ theo dạng hàng, dẫn đến khó khăn trong việc báo cáo và tình trạng quá tải, chậm trễ trên cơ sở dữ liệu.
1.3.2 Khái niệm công nghệ IMDB
Công nghệ Oracle Database In-Memory (IMDB) được giới thiệu từ phiên bản 12c (12.1.0.2) trở lên, áp dụng định dạng kép cho phép lưu trữ dữ liệu ở cả định dạng cột trong bộ nhớ và định dạng hàng truyền thống.
1.3.3 Sự khác biệt của IMDB so với công nghệ lưu trữ truyền thống
Dưới đây là bảng so sánh giữa công nghệ In-memory Database với công nghệ lưu trữ dữ liệu trên ổ cứng như truyền thống:
Lê Thảo Ngọc -Lớp K22HTTTB 8
Phương diện so sánh Cơ sở dữ liệu truyền thống
Nơi lưu trữ dữ liệu Lưu trữ dữ liệu trên disk Lưu trữ và truy vấn dữ liệu trên RAM
Hoạt động của bộ nhớ đệm
Dữ liệu trong buffer cache được quản lý một cách hiệu quả, cho phép truy vấn truy cập và lấy thông tin nhanh chóng từ buffer cache Nếu dữ liệu không có sẵn trong buffer cache, hệ thống sẽ truy cập xuống đĩa để sao chép kết quả vào buffer cache.
IMDB không sử dụng buffer cache, quá trình xử lý câu lệnh nhanh chóng, đơn giản hơn, trả về kết quả nhanh hơn
1.3.4 Những điểm vượt trội của công nghệ IMDB
IMDB kết hợp định dạng cột cho phân tích và định dạng hàng cho giao dịch trực tuyến, giúp tối ưu hóa cả hoạt động OLTP và OLAP Công nghệ này không chỉ tăng tốc độ xử lý giao dịch mà còn đảm bảo hiệu quả cho các truy vấn phân tích, mang lại lợi ích cho cả hai loại hoạt động này (Oracle, 2021).
Hình 1.2 Cấu trúc “định dạng kép” trong IMDB
Khi tính năng In-memory được kích hoạt trên cơ sở dữ liệu, người dùng có thể cấu hình để thực hiện truy vấn OLTP thông qua bộ nhớ đệm (buffer cache) và thực hiện phân tích hoặc báo cáo từ kho dữ liệu In-memory column store Điều này cho phép truy cập dữ liệu từ cả hai vùng lưu trữ một cách hiệu quả.
Lê Thảo Ngọc - Lớp K22HTTTB 9 cho biết rằng công nghệ IMDB (In-Memory Database) mang lại khả năng phân tích dữ liệu nhanh chóng và thực hiện các giao dịch đồng thời, giúp tạo báo cáo theo “thời gian thực” với hiệu suất cao cho bộ nhớ Công nghệ này không chỉ phù hợp với hầu hết các ứng dụng hiện tại của Oracle Database mà còn dễ dàng triển khai mà không cần thay đổi chương trình hay ứng dụng, tùy thuộc vào năng lực của server.
Giải pháp Oracle Database In-Memory mang đến hiệu suất vượt trội cho cơ sở dữ liệu, hỗ trợ báo cáo thời gian thực với độ phức tạp thấp và rủi ro gần như không có.
1.3.5 Khái quát kiến trúc của IMDB
Công nghệ Database In-memory trong Oracle nổi bật với tính năng In-Memory Column Store (IM column store), mục tiêu chính là tối ưu hóa việc lưu trữ dữ liệu bằng cách nén Mỗi segment được đưa vào IM column store thông qua các "In-memory Compression Units (IMCU)", với độ dài hàng và loại nén quyết định số lượng hàng trong mỗi IMCU Mức nén cao giúp tăng số lượng hàng trong IMCU, cho phép cơ sở dữ liệu quét dữ liệu ở định dạng nén mà không cần giải nén, từ đó nâng cao tốc độ truy vấn mà không làm tăng áp lực bộ nhớ Định dạng cột không ảnh hưởng đến dữ liệu trong datafile, buffer cache, undo data hay online redo logging, và cơ sở dữ liệu có cơ chế theo dõi các thay đổi để đảm bảo tính nhất quán của IM column store với các phần còn lại trong database.
ỨNG DỤNG IMDB ĐỂ NÂNG CAO HIỆU NĂNG CHO HỆ THỐNG BÁO CÁO TẠI FPTS
Cơ chế hoạt động của Oracle Database In-Memory
2.1.1 Các tiến trình hoạt động trong IMDB
In-Memory Coordinator Process (IMCO)
Oracle employs the In-Memory Coordinator Process (IMCO) as the primary process for managing and coordinating activities within the IM column store, with its main responsibilities including the population and repopulation of data (Oracle, 2021).
Populate là quá trình đọc các khối dữ liệu từ datafile, chuyển đổi dữ liệu từ dạng hàng sang dạng cột, và nén các cột được chỉ định vào kho cột In-memory của bảng từ đĩa.
Repopulate là quá trình tự động cập nhật dữ liệu sau khi có những thay đổi đáng kể Đây là cơ chế quan trọng giúp IMDB duy trì tính đồng nhất và toàn vẹn dữ liệu trong cơ sở dữ liệu, đặc biệt khi có các thay đổi DML xảy ra.
Lê Thảo Ngọc -Lớp K22HTTTB 17
Hình 2.1 Tiến trình IMCO trong In-memory database
Oracle database thực hiện repopulate dưới hai hình thức là threshold-based và trickle (Oracle, 2021):
Threshold-based repopulation involves populating data when the transaction journal reaches a stable limit known as the "staleness threshold." This threshold is defined by the parameter "Inmemory_max_populate_servers." When the amount of data recorded in the transaction journal exceeds the set value for "Inmemory_max_populate_servers," it indicates that the data in the IMCU has undergone significant changes and requires refreshing.
Trickle repopulation là quá trình tái tạo IMCU định kỳ mà không cần đạt ngưỡng ổn định, hoạt động này diễn ra tự động khi tính năng IMDB được kích hoạt Quá trình này được thực hiện trong nền và In-Memory Coordinator Process sẽ chuyển đổi từ trạng thái “sleep” sang trạng thái hoạt động sau mỗi 2 phút.
“wakes up” và tiến hành xác định xem liệu có cần thực hiện populate, nghĩa là có mục
Lê Thảo Ngọc from Class K22HTTTB is investigating whether any old entries exist in the transaction journal If such entries are found, IMCO will trigger the Space Management Worker Process (Wnnn) to execute the population This mechanism is governed by the parameter "Inmemory_trickle_repopulate_servers_percent," which aims to limit the background processes utilized for trickle repopulation.
Space Management Worker Processes (Wnnn)
Space Management Worker Processes (Wnnn) are job processes for repopulating and populating, coordinated by IMCO This process is responsible for creating IMCU, IMEU, and SMU, as outlined by Oracle (2021).
Trong quá trình repopulate, Wnnn sẽ tạo một phiên bản IMCU mới dựa trên IMCU cũ và nhật ký giao dịch Cơ sở dữ liệu sẽ vẫn giữ lại IMCU phiên bản cũ để phục vụ các truy vấn cho đến khi gặp áp lực về dung lượng trống Cơ chế này được gọi là bộ đệm đôi (double buffering).
Hình 2.2 Tiến trình Wnnn trong In-memory database
Lê Thảo Ngọc -Lớp K22HTTTB 19
Các bước trong cơ chế bộ đệm đôi lần lượt như sau (Oracle, 2021):
- Trong SMU ban đầu, cơ sở dữ liệu đánh dấu IMCU hiện tại là phiên bản gốc cùng một SCN xác định
- Các tiến trình nền tạo phiên bản IMCU dựa vào dữ liệu hàng ban đầu và dữ liệu hàng đã sửa đổi gần nhất
- Trong quá trình tạo IMCU, database ghi nhận những thay đổi của dữ liệu vào Transaction journal của SMU mới
IMCU ban đầu vẫn hoạt động trực tuyến song song với IMCU mới được tạo ra, nhằm đảm bảo khả năng phản hồi liên tục của cơ sở dữ liệu trong bộ nhớ.
2.1.2 DML hoạt động như thế nào với IM column store Để đáp ứng các truy vấn và các lệnh DML, các tiến trình của máy chủ quét columnar data và cập nhật SMU và tiền trình nền thực hiện populate dữ liệu hàng từ đĩa vào In-memory column store
Hình 2.3 Hoạt động DML trong In-memory column store
Khi dữ liệu được tải từ lệnh CREATE TABLE AS SELECT hoặc INSERT /*+APPEND*/ và thực hiện commit, "High Water Mark" sẽ di chuyển để bao gồm dữ liệu mới, đồng thời gửi cảnh báo đến IMCU rằng dữ liệu hiện tại đã thiếu và cần thực hiện repopulate IMCO sẽ quyết định có thực hiện repopulate ngay hay không dựa trên mức độ ưu tiên của object, được thiết lập khi khởi tạo object thông qua tham số Priority.
Lê Thảo Ngọc -Lớp K22HTTTB 20
Khi tham số được đặt là “none”, IMCO sẽ không thực hiện tái tạo object ngay lập tức mà sẽ chờ đến lần quét toàn bộ object tiếp theo Ngược lại, nếu tham số được đặt khác “none”, IMCO sẽ tiến hành repopulate ngay khi có sự thay đổi dữ liệu.
Hình 2.4 High Water Mark trong cơ sở dữ liệu Oracle
High Water Mark là giá trị chỉ định block cuối cùng đã được sử dụng cho bảng khi có sự thay đổi xảy ra Khi dữ liệu được chèn vào bảng, High Water Mark sẽ được cập nhật đến vị trí của block cuối cùng được sử dụng Khi Oracle server thực hiện truy vấn dữ liệu, nó sẽ đọc tất cả các block theo trình tự từ dưới lên trên cho đến khi đạt đến giá trị High Water Mark.
Những ưu, nhược điểm của công nghệ Oracle Database In-Memory
2.2.1 Những ưu điểm của công nghệ Database In-memory
Công nghệ In-memory Databse đem lại những lợi ích đáng kể khi ứng dụng vào hệ cơ sở dữ liệu Oracle, điển hình như sau:
IMDB tăng tốc độ phản hồi của cơ sở dữ liệu, cho phép xử lý các truy vấn với thông lượng cao, đặc biệt hiệu quả cho các câu lệnh phân tích Với định dạng kép cho phép lưu trữ và truy vấn dữ liệu ở cả hai dạng hàng và cột, IMDB tối ưu hóa khả năng truy vấn Hơn nữa, việc chỉ truy cập vào những cột cần thiết và xử lý dữ liệu trong định dạng nén không chỉ tăng tốc độ truy vấn mà còn giảm tải cho bộ nhớ.
Lê Thảo Ngọc -Lớp K22HTTTB 21
IMDB đảm bảo tính sẵn sàng và toàn vẹn của dữ liệu bằng cách không để định dạng cột ảnh hưởng đến dữ liệu trong datafile, buffer cache, hay undo data và online redo log Oracle sử dụng các cơ chế theo dõi thay đổi dữ liệu thông qua Transaction Journal, giúp duy trì sự nhất quán giữa IM column store và các phần khác của database Do đó, một câu truy vấn vào IM column store và buffer cache luôn cho kết quả giống nhau.
Thứ ba, IMDB mang tương đối đủ với các tính năng như một CSDL thông thường, tuân theo chuẩn thế giới cho CSDL
IMDB sở hữu nhiều tính năng nâng cao, trong đó nổi bật là khả năng tự động loại bỏ dữ liệu không cần thiết thông qua quy trình IMCU pruning Quá trình này giúp loại bỏ các kết quả không phù hợp từ cột dữ liệu, chỉ giữ lại những IMCU đáp ứng điều kiện truy vấn, từ đó giảm thiểu số lượng hàng quét và tối ưu hóa hiệu suất truy vấn.
Tính năng "Pruning" dữ liệu trong IMDB giúp tối ưu hóa hiệu suất cho các câu lệnh tốn thời gian như scan full table, filter table, hash join và group by Điều này không chỉ mang lại lợi ích cho hệ thống OLTP mà còn hỗ trợ hiệu quả trong việc tạo báo cáo thời gian thực trực tiếp trên database OLTP, đồng thời tăng tốc hoạt động "mixed workload".
2.2.2 Những nhược điểm của công nghệ Database In-memory
Bên cạnh đó, công nghệ cơ sở dữ liệu trên bộ nhớ này cũng song song tồn tại một số hạn chế nhất định
Công nghệ IMDB không mang lại lợi ích cho các câu lệnh DML như xóa, chèn, cập nhật, cũng như cho việc sắp xếp và truy xuất hàng Việc truy cập bảng thông qua chỉ mục đôi khi có thể kém hiệu quả, và việc truy cập toàn bộ bảng qua In-memory có thể phát sinh nhiều chi phí.
Lê Thảo Ngọc - Lớp K22HTTTB 22 nhận thấy rằng việc truy cập thông qua index có thể tốn kém hơn, nhưng có nhiều biện pháp khắc phục để tối ưu hóa việc sử dụng công nghệ IMDB một cách hiệu quả.
Khi triển khai công nghệ IMDB trong hệ thống cơ sở dữ liệu, cần đánh giá khối lượng dữ liệu cần lưu trữ In-memory và xem xét khả năng xử lý của SGA hiện tại.
Công nghệ In-memory Database, mặc dù có những ưu và nhược điểm, vẫn mang lại nhiều lợi ích đáng kể Việc nghiên cứu và ứng dụng công nghệ này một cách hiệu quả có thể tối ưu hóa lâu dài cho hiệu suất của cơ sở dữ liệu.
So sánh In-memory Database với các công nghệ cạnh tranh
2.3.1 So sánh IMDB với công nghệ lưu trữ truyền thống trên đĩa
Cơ sở dữ liệu in-memory hoạt động mà không cần sự can thiệp của đĩa, cho phép dữ liệu được truy xuất trực tiếp từ RAM Điều này giúp tối ưu hóa quy trình lấy dữ liệu, làm cho nó nhanh chóng và hiệu quả hơn so với việc cache dữ liệu từ ổ cứng Hơn nữa, tốc độ đọc ghi của RAM vượt trội hơn so với các loại ổ đĩa cứng khác, giúp rút ngắn thời gian phản hồi khi truy vấn dữ liệu so với các mô hình cơ sở dữ liệu truyền thống.
2.3.2 So sánh IMDB với kỹ thuật partitioning
Một trong những hình thức phân vùng điển hình trong hệ thống cơ sở dữ liệu tại công ty cổ phần chứng khoán FPT là phân vùng bảng (table partitioning) Phân vùng bảng là quá trình chia nhỏ các bảng và chỉ mục lớn thành nhiều phần nhỏ hơn dựa trên một thuộc tính logic nhất định Phương pháp này được áp dụng khi dữ liệu trong bảng rất lớn và thường có tính tuần tự Hình 2.6 minh họa việc phân vùng bảng “Khách hàng_chi nhánh” dựa trên thuộc tính “năm”.
Lê Thảo Ngọc -Lớp K22HTTTB 23
Kỹ thuật phân vùng bảng, như bảng “Khách hàng_chi nhánh” trong cơ sở dữ liệu, là một phương pháp hiệu quả để cải thiện hiệu suất thao tác đọc ghi I/O vật lý Phương pháp này giúp tăng tốc độ truy vấn dữ liệu mà không làm thay đổi cấu trúc logic của cơ sở dữ liệu, đồng thời các câu truy vấn và lệnh DML không cần phải điều chỉnh để truy cập các bảng đã được phân vùng.
Mặc dù công nghệ lưu trữ dựa trên ổ cứng với định dạng dữ liệu truyền thống vẫn được sử dụng, nhưng nó không mang lại hiệu suất cao hơn hay tiết kiệm bộ nhớ như công nghệ In-memory Thêm vào đó, việc phân vùng các bảng trong các tablespace khác nhau sẽ làm tăng độ phức tạp trong việc quản lý dữ liệu.
2.3.3 So sánh IMDB với kỹ thuật caching
Caching dữ liệu là kỹ thuật quan trọng giúp tăng tốc độ truy vấn cơ sở dữ liệu, trong đó kỹ thuật query result cache nổi bật Kỹ thuật này cho phép lưu trữ các kết quả truy vấn lớn và lặp lại nhiều lần trong cơ sở dữ liệu để tái sử dụng hiệu quả Result Cache nằm trong vùng bộ nhớ shared pool của SGA, giúp tối ưu hóa hiệu suất truy vấn Hình 2.7 minh họa cơ chế hoạt động của server result cache.
Lê Thảo Ngọc -Lớp K22HTTTB 24
Hình 2.7 Cấu trúc Result cache trong cơ sở dữ liệu
Khi nhận yêu cầu truy vấn dữ liệu lần đầu, CSDL sẽ lấy dữ liệu từ bộ nhớ đệm database buffer cache, xử lý và trả kết quả, đồng thời lưu trữ kết quả vào result cache trong SGA Đối với các truy vấn tương tự sau này, kết quả sẽ được lấy trực tiếp từ result cache, giúp tiết kiệm thời gian so với quy trình truyền thống Kết quả trong result cache sẽ bị xóa khi có sự thay đổi dữ liệu.
Result cache là một kỹ thuật đơn giản giúp rút ngắn thời gian truy cập dữ liệu, nhưng không áp dụng cho mọi loại dữ liệu trong cơ sở dữ liệu mà chỉ phù hợp với một số bài toán và câu lệnh cụ thể Trong khi đó, IMDB cung cấp nhiều tối ưu hơn với khả năng chỉ định bảng in-memory một cách linh hoạt, tùy thuộc vào mục đích của người quản trị, từ đó đáp ứng đa dạng yêu cầu và bài toán cho cơ sở dữ liệu.
Mỗi công nghệ đều mang lại lợi thế riêng trong việc tăng tốc độ truy vấn và cải thiện hiệu suất cơ sở dữ liệu Để chọn một công nghệ lưu trữ tích hợp mới, đáp ứng nhu cầu cho cả OLAP và OLTP, đồng thời dễ triển khai và quản trị mà không tạo áp lực lớn cho bộ nhớ, công nghệ IMDB là một lựa chọn ưu tiên đáng cân nhắc.
Lê Thảo Ngọc -Lớp K22HTTTB 25
Áp dụng công nghệ IMDB vào hệ thống cơ sở dữ liệu tại FPTS
2.4.1 Lựa chọn database phù hợp để tiến hành áp dụng công nghệ IMDB
Những hệ thống database oracle mang những đặc điểm dưới đây sẽ phù hợp và có thể cân nhắc để áp dụng công nghệ:
Một là, cơ sở dữ liệu mà hệ thống sử dụng là Oracle và phải thuộc phiên bản 12C (12.1.0.2) trở lên
Hệ thống có tần suất sử dụng cao và thường xuyên truy vấn cơ sở dữ liệu, yêu cầu thời gian phản hồi nhanh chóng, điển hình là hệ thống thống kê và báo cáo dữ liệu.
Ba là, CSDL với quy mô dữ liệu lớn (thường là cơ sở dữ liệu trong Ngân hàng, các công ty chứng khoán, các tổ chức tiền tệ, …)
Hệ thống thường xuyên thực hiện các hoạt động tạo ra tải cao cho cơ sở dữ liệu, bao gồm việc cập nhật liên tục các dữ liệu đa biến, đồng thời sử dụng báo cáo định kỳ.
Tốc độ truy vấn chậm trên cơ sở dữ liệu thường không phải do các yếu tố bên ngoài như tốc độ đường truyền kém hay mã nguồn chưa tối ưu, mà chính là do vấn đề nội tại của cơ sở dữ liệu đó.
Sáu là, cơ sở dữ liệu có đủ tài nguyên hoặc sẵn sàng mở rộng tài nguyên để sử dụng công nghệ In-memory database
Nghiên cứu và áp dụng công nghệ IN-memory Database là một lựa chọn phù hợp và hiệu quả cho các hệ thống cơ sở dữ liệu hiện tại và tương lai, đặc biệt với những đặc điểm nổi bật của chúng.
2.4.2 Yêu cầu bộ nhớ và các thông số để thiết lập tính năng IMDB
Khi cấu hình các tham số cho hoạt động IMDB, cần lưu ý rằng tham số "In-memory area" tối thiểu phải là 100MB (Oracle, 2021) Kích thước này sẽ không tự động tăng mà cần được điều chỉnh thủ công qua câu lệnh khi cần thiết, với mỗi lần tăng tối thiểu là 128MB so với kích thước hiện tại.
Khi thiết lập tính năng In-memory column store, việc phân bổ kích thước cho các thành phần SGA (System Global Area) và PGA (Program Global Area) trong bộ nhớ cần tuân theo công thức chung được trình bày trong bảng dưới đây Giá trị của các thành phần này đóng vai trò quan trọng trong hiệu suất và khả năng tối ưu hóa bộ nhớ của hệ thống.
Sau khi kích hoạt cột lưu trữ IM, giá trị của “SGA_TARGET” sẽ được tính bằng tổng giá trị hiện tại của “SGA_TARGET” và “IMMEMORY_SIZE” cho cơ sở dữ liệu đơn, hoặc bằng tổng giá trị “SGA_TARGET” và “IMMEMORY_SIZE * 1.1” cho cơ sở dữ liệu cặp RAC.
“PGA_AGGREGATE_TARGET” không cần thay đổi (Oracle, 2023)
Lê Thảo Ngọc -Lớp K22HTTTB 26
Loại cơ sở dữ liệu
Thông số SGA_TARGET mới với IMDB
Thông số PGA_AGGREGATE_TARGET mới với IMDB
Bảng 2.1 Yêu cầu bộ nhớ của công nghệ In-memory database
Ngoài ra, khi thiết lập tính năng In-memory database cho cơ sở dữ liệu, cần lưu ý cài đặt những tham số sau (Oracle, 2021):
Tham số “inmemory_size” quy định kích thước bộ nhớ cho In-memory column store, yêu cầu phải lớn hơn 100MB để kích hoạt tính năng IMDB Để vô hiệu hóa IMDB, tham số này cần được đặt bằng 0 Trong database 19c, tham số này được thiết lập ở CDB (Container Database) và xác định kích thước tổng thể của In-memory column store cho tất cả các PDB (Pluggable database) bên trong Tất cả các Pluggable database đều có quyền truy cập vào In-memory column store, nhưng có thể giới hạn quyền truy cập cho từng PDB bằng cách thiết lập giá trị riêng cho tham số này.
Tham số “Inmemory_max_populate_servers” quy định giá trị cho ngưỡng ổn định trong cơ chế tái tạo lại IMCU theo hình thức “Threshold-based” Để thực hiện repopulate theo cách này, cần thiết lập tham số tương ứng.
“Inmemory_max_populate_servers” giá trị khác 0
The parameter "Inmemory_trickle_repopulate_servers_percent" limits the background processes used for trickle repopulation Trickle repopulation is the default method for repopulating in IMDB To disable this method, set the value accordingly.
0 cho tham số “Inmemory_trickle_repopulate_servers_percent”
2.4.3 Xây dựng môi trường để tiến hành thực nghiệm công nghệ IMDB
Dựa trên các tiêu chí đã nêu ở mục 2.4.1 và tình hình hiện tại của hệ thống cơ sở dữ liệu tại công ty cổ phần chứng khoán FPT, tôi nhận thấy rằng cơ sở dữ liệu "Trading" là lựa chọn phù hợp và cần thiết để áp dụng công nghệ này Đây là một trong những cơ sở dữ liệu thường gặp tình trạng quá tải, dẫn đến chậm trễ khi thực hiện các báo cáo.
Lê Thảo Ngọc -Lớp K22HTTTB 27
Công ty hiện đang sử dụng hai hệ thống cơ sở dữ liệu, bao gồm hệ thống product và develop Việc kiểm thử và trải nghiệm công nghệ mới được thực hiện trên hệ thống develop nhằm theo dõi và hoàn thiện trước khi áp dụng vào hệ thống product, đảm bảo tính liên tục và giảm thiểu rủi ro Do đó, tôi sẽ thực hiện demo trên cơ sở dữ liệu 19c phiên bản develop bằng cách tạo thêm một Pluggable Database (PDB) có tên “dgtest” và nhập dữ liệu từ cơ sở dữ liệu khác vào đó.
“Trading” bản product Các bước thiết lập môi trường demo được mô phỏng bằng hình dưới đây:
Để tạo cơ sở dữ liệu cho thực nghiệm IMDB, trước tiên bạn cần tạo thư mục chứa datafile và tempfile thuộc nhóm đĩa ASM “DBDISK” của cơ sở dữ liệu “dgtest” bằng các lệnh sau: `mkdir DBDISK/DGTEST/TRD`, `mkdir DBDISK/DGTEST/TRD/DATAFILE`, và `mkdir DBDISK/DGTEST/TRD/TEMPFILE`.
Tiếp theo, trên “Sql navigator”, tiến hành tạo PDB mới tên TRD dựa vào PDB$SEED đã có và để cơ sở dữ liệu mới này ở trạng thái “Open”
Lê Thảo Ngọc -Lớp K22HTTTB 28
Hình 2.9 minh họa quá trình tạo “PDB” dựa vào PDB$SEED Kết quả là một PDB mới mang tên TRD, với con_id là 11, như thể hiện trong hình 2.10 PDB này sẽ được sử dụng cho việc thử nghiệm công nghệ In-memory Database.
Hình 2.10 Pluggable Database “TRD” được tạo và ở trạng thái Open
Sau khi hoàn tất việc tạo PDB, cần xuất dữ liệu từ cơ sở dữ liệu trading và nhập vào cơ sở dữ liệu TRD trên “dgtest” Để đảm bảo quá trình nhập diễn ra thuận lợi, cơ sở dữ liệu “dgtest” phải ở trạng thái “noarchivelog” và các tablespace trong “TRD” phải hoàn toàn giống với các tablespace có trong cơ sở dữ liệu “Trading”.
Đánh giá kết quả đề tài nghiên cứu
3.2.1 Những đóng góp của đề tài nghiên cứu
Nghiên cứu đã đạt được các mục tiêu đề ra, bao gồm việc cung cấp cái nhìn tổng quát và chi tiết về công nghệ cơ sở dữ liệu In-memory, cùng với cơ chế ứng dụng và phân tích ưu nhược điểm của nó trong bối cảnh cơ sở dữ liệu Oracle.
Bài nghiên cứu đã thực hiện thành công các thí nghiệm, và kết quả thu được hoàn toàn phù hợp với lý thuyết đã được nghiên cứu trước đó.
Nội dung nghiên cứu về công nghệ In-memory database cung cấp kiến thức toàn diện và trải nghiệm demo, mang lại giá trị lý thuyết và thực tiễn Nghiên cứu không chỉ đóng góp cho đơn vị thực tập mà còn là tài liệu tham khảo hữu ích cho các tổ chức tài chính và những ai quan tâm đến công nghệ mới trong cơ sở dữ liệu Oracle.
Nghiên cứu này đã được tổ chức hội thảo và trình bày trước ban lãnh đạo cùng các bộ phận liên quan trong công ty thực tập, nhằm mục tiêu cuối cùng là triển khai kết quả trên sản phẩm của công ty.
3.2.2 Những hạn chế của đề tài nghiên cứu
Bên cạnh những kết quả đã đạt được, đề tài nghiên cứu vẫn còn một số hạn chế nhất định cần khắc phục, cụ thể:
Công nghệ In-memory database hiện chỉ được thử nghiệm trên một instance trong mô hình Oracle Real Application Clusters (RAC) và chưa được triển khai trên cả hai instance Hơn nữa, công nghệ này cũng chưa được áp dụng thử nghiệm trên các mô hình cơ sở dữ liệu khác như Oracle Data Guard.
Thời gian nghiên cứu và theo dõi công nghệ hiện tại vẫn chưa đủ dài, dẫn đến việc quản lý chi tiết quá trình áp dụng chưa thực sự hiệu quả Điều này ảnh hưởng đến khả năng phát hiện và xử lý các vấn đề phát sinh trong quá trình sử dụng công nghệ.
Lê Thảo Ngọc -Lớp K22HTTTB 53 phát sinh, đưa ra một phương pháp tối ưu nhất để phát huy tối đa hiệu suất mà công nghệ mang lại
Trong bài viết này, tác giả đã nêu rõ những hạn chế hiện có của đề tài và đồng thời đề xuất một số giải pháp cũng như hướng phát triển nhằm hoàn thiện nội dung hơn trong tương lai.
Hướng phát triển của đề tài trong tương lai
3.3.1 Hoàn thiện và phát triển công nghệ IMDB trong tương lai
Bài nghiên cứu đã đạt được nhiều kết quả tích cực, tuy nhiên vẫn còn một số thiếu sót và hạn chế cần khắc phục Do đó, nghiên cứu đề xuất một số mục tiêu phát triển nhằm tiếp tục hoàn thiện đề tài trong tương lai.
Tiếp tục nghiên cứu sâu về lý thuyết công nghệ In-memory Database, bao gồm các yếu tố ảnh hưởng đến quá trình "repopulate" và cơ chế "mirror IMCU" (bản sao IMCU).
Nghiên cứu cách hoạt động và quản lý công nghệ IMDB trên các hệ thống cơ sở dữ liệu như Oracle Real Application Clusters (Oracle RAC) và Oracle Data Guard là một hướng đi tiềm năng Việc thực hiện thử nghiệm này trên tất cả các instance của hệ thống đã có trong cơ sở dữ liệu của đơn vị thực tập sẽ hoàn toàn khả thi trong tương lai.
Vào thứ ba, tổ chức và tham gia các hội thảo về công nghệ mới có tiềm năng nâng cao tốc độ cơ sở dữ liệu, đồng thời thực hiện báo cáo theo thời gian thực Điều này nhằm chia sẻ và củng cố kiến thức về cơ sở dữ liệu In-memory cũng như các công nghệ khác trong hệ sinh thái Oracle.
3.3.2 Nghiên cứu và phát triển tính năng “Result Cache” cải thiện hiệu năng cho cơ sở dữ liệu
Kỹ thuật "query result cache" là một phương pháp hiệu quả để cải thiện tốc độ truy vấn trong cơ sở dữ liệu, được áp dụng từ Oracle 11g So với In-memory database, công nghệ này có thể được sử dụng cho các database 11g hiện tại tại công ty cổ phần chứng khoán FPT "Result cache" là một khu vực trong SGA, dùng để lưu trữ kết quả của truy vấn và giá trị của các hàm PL/SQL thường xuyên được gọi trong cơ sở dữ liệu để tái sử dụng.
3.3.2.a Cơ chế hoạt động của Server Result Cache
Khi thực thi một truy vấn, cơ sở dữ liệu kiểm tra bộ nhớ cache để xác định xem kết quả đã có trong bộ nhớ kết quả hay chưa Nếu có, nó sẽ lấy kết quả từ bộ nhớ kết quả thay vì thực hiện lại truy vấn.
Lê Thảo Ngọc -Lớp K22HTTTB 54 không, truy vấn sẽ được thực thi bình thường, trả ra output đồng thời và lưu trữ kết quả này trong “result cache”
Khi một câu truy vấn hoặc hàm được thực hiện nhiều lần, cơ sở dữ liệu sẽ truy xuất kết quả từ bộ nhớ cache, giúp tiết kiệm thời gian phân tích lệnh và lấy dữ liệu từ buffer cache Nhờ đó, thời gian phản hồi và các thao tác cần thực hiện cho mỗi truy vấn sẽ được giảm thiểu đáng kể.
3.3.2.b Cách sử dụng “Result cache” trong cơ sở dữ liệu Oracle
Có 3 cách để áp dụng công nghệ caching kết quả trong cơ sở dữ liệu Oracle : Thứ nhất, có thể thiết lập tính năng này ở mức system/session bằng câu lệnh:
“ALTER SYSTEM/SESSION SET RESULT_CACHE_MODE=FORCE;”
Khi ở mức này, toàn bộ câu lệnh thực hiện trong system, các session đều sẽ được caching
Bạn có thể chỉ định caching dữ liệu cho từng bảng bằng cách thêm lệnh “RESULT_CACHE (MODE FORCE)” sau khối lệnh tạo bảng Toàn bộ dữ liệu và các kết quả thao tác với bảng sẽ được lưu trữ trong “result cache”.
Để tối ưu hóa hiệu suất, bạn có thể áp dụng tính năng "Result cache" cho một số câu lệnh nhất định bằng cách sử dụng hint “/*+ RESULT_CACHE */” trong quá trình viết lệnh Phương pháp này cho phép bạn tùy chọn kết quả cần caching và dễ dàng kiểm soát hoạt động của "result cache".
Tính năng "sever result cache" có thể áp dụng rộng rãi cho các cơ sở dữ liệu từ phiên bản 11g, giúp cải thiện tốc độ thực thi các truy vấn phức tạp bằng cách sử dụng kết quả có sẵn Việc áp dụng tính năng này đơn giản và linh hoạt, có tiềm năng nâng cao hiệu năng cho hoạt động thống kê và báo cáo trong cơ sở dữ liệu Đồng thời, tác giả đã tiến hành nghiên cứu và thực nghiệm tính năng "Result cache" tại đơn vị thực tập, với hy vọng kết hợp linh hoạt giữa công nghệ In-memory database và phương pháp này, nhằm tối ưu hóa lợi ích cho hệ thống cơ sở dữ liệu tại công ty cổ phần chứng khoán FPT.
Lê Thảo Ngọc -Lớp K22HTTTB 55
Khóa luận là một sự nghiên cứu toàn diện và chuyên sâu về In-memory database
Khóa luận này tập trung vào cơ sở dữ liệu In-memory trên hệ thống Oracle, nhằm cải thiện tốc độ báo cáo tại công ty Cổ phần chứng khoán FPT Dựa trên kiến thức và kinh nghiệm tích lũy, nghiên cứu đã đạt được các mục tiêu đề ra và xác định hướng phát triển tương lai Nội dung lý thuyết kết hợp với kết quả thực tế đã cung cấp cái nhìn sâu sắc về công nghệ In-memory database, bao gồm đặc điểm, tính năng, cơ chế hoạt động và khả năng áp dụng Kết quả cho thấy In-memory database là công nghệ tiềm năng, mang lại lợi ích rõ rệt cho hoạt động phân tích và báo cáo trên cơ sở dữ liệu Oracle.
Khóa luận của tôi hy vọng sẽ mang lại giá trị kế thừa và tổng hợp thông tin, kiến thức từ các công trình trước, đồng thời ứng dụng phù hợp với tình hình cơ sở dữ liệu hiện tại tại công ty Cổ phần chứng khoán FPT Bài luận này nhằm cung cấp giá trị tham khảo thiết thực cho các nhà học thuật và những người làm quản trị cơ sở dữ liệu Tôi mong rằng công nghệ In-memory database sẽ ngày càng được biết đến và ứng dụng rộng rãi, phát huy tối đa lợi ích của nó Trong tương lai, tôi tin rằng đề tài sẽ tiếp tục được hoàn thiện với các giải pháp và kiến nghị phù hợp, nâng cao hiệu năng hoạt động doanh nghiệp và đóng góp vào năng lực công nghệ thông tin, hướng tới mục tiêu kinh tế số của đất nước.
Lê Thảo Ngọc -Lớp K22HTTTB 56