Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Phát hiện các thay đổi cơ sở dữ liệu gia tăng (Oracle sang MongoDB ETL)

Việc phát hiện các bổ sung và cập nhật cho các bảng cơ sở dữ liệu để sao chép dữ liệu, ETL, che PII và các hoạt động thao tác và di chuyển dữ liệu gia tăng khác có thể được tự động hóa trong quy trình làm việc IRI Voracity được thiết kế và chạy trong IRI Workbench (WB). Bài viết này giải thích cách thường xuyên kiểm tra các thay đổi trong bảng nguồn Oracle để quyết định thời điểm di chuyển dữ liệu vào mục tiêu MongoDB.

Các thay đổi có thể được tải vào các cơ sở dữ liệu hoặc tệp khác nhau bằng cách sử dụng tệp lô hoặc tập lệnh shell được lập lịch tác vụ. Điều này có thể được thực hiện bằng cách sử dụng dấu thời gian và các trường cụ thể trong bảng nguồn. Kiểm tra lỗi được bao gồm và cũng có thể được phản hồi sau.

Ví dụ này sẽ được tạo và chạy trên máy Windows; tuy nhiên, nó có thể dễ dàng sửa đổi để hoạt động trên nền tảng giống như Linux hoặc Unix.

Dễ dàng tạo tệp lô bằng cách sử dụng sơ đồ Luồng độ chính xác trong WB. Trong ví dụ này, bảng nguồn chứa các cột có tên CREATION_DATE UPDATE_DATE điều quan trọng trong công việc này.

Hình ảnh dưới đây cho thấy các bước có trong tệp loạt. Tóm lại:

  • công việc được chạy trong một thư mục cụ thể
  • một biến môi trường được đặt bằng cách sử dụng dấu thời gian của lần chạy công việc cuối cùng
  • dấu thời gian hiện tại được ghi lại
  • các thay đổi hiện tại đã được ghi lại
  • mức độ lỗi được kiểm tra và xử lý nếu thành công hay không
  • dấu thời gian hiện tại sẽ ghi đè lên dấu thời gian lần chạy cuối cùng
  • dữ liệu đã thay đổi được chuyển đổi thành CSV
  • xảy ra lỗi để chờ tệp cuối cùng tồn tại
  • tệp CSV được nhập vào MongoDB
  • mức lỗi được kiểm tra, tệp hiện tại bị cắt bớt
  • tệp thay đổi đã bị xóa


Mỗi khối tác vụ trong quy trình làm việc được giải thích bên dưới. Để biết cách xây dựng quy trình làm việc Voracity từ bảng màu, hãy xem bài viết này.

Thay đổi Thư mục

Khối này thay đổi thư mục làm việc hiện tại thành thư mục được chỉ định.

Đặt LASTTIME

Khối dòng lệnh này đặt một biến môi trường có tên là LASTTIME . Giá trị được đặt cho biến là nội dung của tệp LastTime.txt . Dấu thời gian trong tệp này là dấu thời gian đã được ghi lại trong lần chạy cuối cùng của công việc này. Nếu đây là lần chạy đầu tiên, tệp này sẽ phải được tạo theo cách thủ công với dấu thời gian tùy ý được ghi ngày trước khi lệnh này được chạy.

Timestamp.scl

Khối chuyển đổi này sử dụng chương trình CoSort SortCL trong Voracity để truy vấn cơ sở dữ liệu nguồn cho thời điểm hiện tại. Dấu thời gian đó được lưu vào một tệp có tên là LastTimeTemp.txt . Lý do nó được lưu trữ trong một tệp tạm thời là để cả tem hiện tại và dấu thời gian gần đây nhất có thể được lưu giữ cho đến khi việc kiểm tra lỗi xảy ra.

Điều quan trọng là dấu thời gian đến từ cơ sở dữ liệu chứ không phải từ máy cục bộ. Điều này tránh các vấn đề trong đó cơ sở dữ liệu và môi trường thực thi không được đồng bộ hóa.

Changes.scl

Khối chuyển đổi này thực hiện một số điều. Hiển thị bên dưới là Sơ đồ ánh xạ chuyển đổi cho khối này. Đầu vào là bảng nguồn và đầu ra là tệp current.txt .

Trong đầu vào Tùy chọn phần, một truy vấn được gửi tới bảng nguồn cho tất cả các bản ghi có CREATION_DATE hoặc UPDATE_DATE lớn hơn biến môi trường LASTTIME .

Trong khi đầu ra dường như có hai mục tiêu, dữ liệu thực sự đang được nối vào cùng một tệp bằng cách sử dụng hai điều kiện khác nhau. Trong phần đầu ra đầu tiên, có một phần Bao gồm câu lệnh tìm tất cả các bản ghi có CREATION_DATE lớn hơn LASTTIME . Ngoài ra còn có một trường đầu ra bổ sung được gọi là CDC_TYPE . Chuỗi “CREATE” được ghi lại trong trường mới đó.

Trong phần đầu ra thứ hai, một Bao gồm câu lệnh tìm tất cả các bản ghi có UPDATE_DATE lớn hơn LASTTIME và ở đâu CREATION_DATE không bằng UPDATE_DATE. Điều này đảm bảo rằng các tệp mới tạo không được bao gồm trong thẻ này. Chuỗi “UPDATE” được ghi lại trong CDC_TYPE.

Sắp xếp lỗi

Khối quyết định này kiểm tra biến ERRORLEVEL để đảm bảo nó trả về 0 (hoặc thành công) sau khi chạy công việc CoSort ở trên. Nếu không, công việc tiếp tục đến EXIT chặn nơi công việc bị chấm dứt. Nếu nó trả về true, công việc sẽ tiếp tục đến khối tiếp theo.

Đổi tên LastTimeTemp

Khối lệnh này sao chép nội dung của LastTimeTemp.txt sang LastTime.txt. Điều này ghi lại dấu thời gian hiện tại đã được chụp trước đó trong tệp để được sử dụng cho lần chạy công việc tiếp theo.

Convert.scl

Khối chuyển đổi này lấy current.txt và chuyển đổi nó thành changes.csv . Việc chuyển đổi là từ loại tệp được phân tách mặc định thành CSV. Sử dụng loại quy trình CSV trong CoSort sẽ thêm một hàng tiêu đề vào tệp đầu ra bằng cách sử dụng các tên trường. Đây là khối tác vụ mà tôi có thể áp dụng các thao tác khác (như tạo mặt nạ dữ liệu) cho dữ liệu nếu tôi muốn.

Chờ tệp

Khối chờ này ngăn tệp hàng loạt trong 3 giây và sau đó kiểm tra sự tồn tại của changes.csv trước khi tiếp tục.

MongoImport

Khối lệnh này thực thi lệnh mongoimport bằng cách sử dụng các tham số được chỉ định trong chế độ xem thuộc tính như được hiển thị bên dưới.

Các tham số chỉ ra rằng cơ sở dữ liệu MongoDB được gọi là fnx sẽ được tải với nội dung của tệp changes.csv thuộc loại csv và chứa một dòng tiêu đề xác định các trường.

Lưu ý rằng Voracity hỗ trợ các phương pháp khác để di chuyển và thao tác dữ liệu MongoDB. Xem ví dụ này về cách sử dụng trình điều khiển Tiến trình ODBC để che dữ liệu bằng cách sử dụng các chức năng “FieldShield” tích hợp sẵn. Voracity cũng có thể xử lý dữ liệu BSON trực tiếp thông qua API thông qua / PROCESS =MongoDB hỗ trợ trong CoSort v10, bây giờ cũng vậy.

Lỗi khi tải

Khối quyết định này kiểm tra biến ERRORLEVEL để đảm bảo rằng nó trả về 0 (hoặc thành công) sau khi nhập vào MongoDB. Nếu không, công việc tiếp tục đến Xóa-Thay đổi EXIT khối nơi công việc bị chấm dứt. Nếu nó trả về true, công việc sẽ tiếp tục đến khối tiếp theo.

Cắt ngắn hiện tại

Khối lệnh này cắt ngắn tệp current.txt . Điều này là để xóa các bản ghi đã được tải vào MongoDB. Nếu quá trình nhập không thành công và khối ở trên đã thoát khỏi công việc, thì các bản ghi đã thay đổi này sẽ được thêm vào trong lần chuyển tiếp theo. Sau đó, khi công việc lặp lại, chúng sẽ được tải vào MongoDB với nhóm bản ghi đã thay đổi tiếp theo.

Xóa các Thay đổi

Khối lệnh này xóa changes.csv để lần vượt qua tiếp theo được bắt đầu bằng một tệp mới được tạo cho thẻ.

Tệp hàng loạt

Tệp lô và tập lệnh chuyển đổi được tạo khi Sơ đồ luồng được xuất. Dưới đây là một bản sao của tệp loạt. Mỗi khối thêm các dòng thực thi vào tệp lô.

Trình lập lịch tác vụ

Sử dụng Bộ lập lịch tác vụ của Windows, tệp hàng loạt này có thể được thực thi lặp đi lặp lại để nắm bắt các thay đổi trong cơ sở dữ liệu nguồn.

Kết luận

Với một chút lập kế hoạch và sử dụng các khối lệnh, các thay đổi đối với bảng cơ sở dữ liệu có thể được phát hiện tự động bằng cách sử dụng một tệp lô, sau đó được lập lịch để chạy trong các khoảng thời gian đã chọn.

Liên hệ với [email protected] hoặc đại diện IRI của bạn để biết thêm thông tin hoặc trợ giúp về trường hợp sử dụng của bạn

  1. Cách tiếp cận này khác với các giải pháp thu thập dữ liệu thay đổi dựa trên nhật ký, thường có tắc nghẽn về hiệu suất và bị giới hạn ở các cơ sở dữ liệu cụ thể và không cho phép chuyển đổi dữ liệu đồng thời, che dữ liệu PII, làm sạch và báo cáo.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách tạo một thủ tục được lưu trữ trong oracle chấp nhận mảng tham số

  2. Giá trị trình tự Oracle không được sắp xếp

  3. Addnode Resolutionv.conf Failures

  4. Oracle sql:mệnh đề thứ tự và phân biệt

  5. Câu lệnh If trong mệnh đề Where