Gọi api từ mysql

Đây là một ý tưởng thú vị điên rồ hóa ra lại không tốt lắm trong thực tế. Nếu bạn có một bảng mysql mà bạn đang theo dõi các thay đổi, bạn có thể sử dụng trình kích hoạt để làm như vậy [miễn là bạn có phiên bản mysql bán hiện đại]

Đôi khi bạn có thể muốn thông báo cho một dịch vụ khác về bất kỳ thay đổi nào [dịch vụ ghi nhật ký từ xa, hàng đợi tin nhắn, v.v.]. Chẳng hạn, ở 8z, khi giá niêm yết thay đổi, đây là một sự kiện thú vị mà các phần mềm khác nên được thông báo

Bước đầu tiên là cài đặt mysql http UDF [tất cả các lệnh bên dưới đều dành cho centos]

$ sudo yum install curl-devel

$ CPPFLAGS="-I/usr/include/mysql"  ./configure --with-mysql=/etc/my.cnf   --enable-shared

$ make

Điều này mang lại cho chúng ta một. la [được tạo bằng libtool] nhưng may mắn thay, có một. vì vậy ẩn tập tin

sudo cp .libs/mysql-udf-http.so.0.0.0 /usr/lib64/mysql/plugin/mysql-udf-http.so

Sau đó, dịch vụ nghỉ ngơi từ xa của bạn có thể sẽ cần JSON, vì vậy bạn sẽ muốn truy cập trung tâm mysql udf. Có một hàm JSON. Tôi vừa lấy tệp C từ github và biên dịch nó. ________số 8_______

Sau khi chúng được biên dịch, bạn phải sao chép. so vào thư mục thích hợp và sau đó thêm các chức năng với tư cách là người dùng đặc quyền, theo quy ước UDF thông thường

Bây giờ bạn có thể tạo trình kích hoạt gọi các chức năng này

delimiter $
CREATE TRIGGER upd_check BEFORE UPDATE ON account 
FOR EACH ROW 
  BEGIN 
    IF NEW.amount > 0 THEN 
      set @json = select json_object[account_id,amount] 
      select http_post['//restservice.example.com/account/post',@json]; 
    END IF; 
  END;$ 

delimiter;

Lưu ý rằng tôi không thực sự triển khai điều này, vì vậy mã ở trên dựa trên trí nhớ của tôi. Nếu bạn thử điều này và có một số chỉnh sửa, vui lòng để lại trong phần bình luận và tôi sẽ cập nhật bài đăng này

Tại sao tôi không thực sự triển khai điều này, sau khi thực hiện phần tốt hơn của nghiên cứu đáng giá trong một ngày? . Xử lý lỗi cho trình kích hoạt yếu–nếu trình kích hoạt không thành công vì bất kỳ lý do gì [chẳng hạn như dịch vụ từ xa bị ngừng hoạt động], bạn sẽ cần xây dựng hệ thống ghi lỗi hoặc gửi email. Ngoài ra, nếu có một số hàng được cập nhật, tất cả các hàng này đều kích hoạt lệnh gọi http ra bên ngoài, thì bạn có thể gặp phải các vấn đề về hiệu suất, khó sao chép hoặc phân tích và quan trọng nhất là có thể ảnh hưởng đến khả năng hoạt động như một cơ sở dữ liệu của cơ sở dữ liệu của bạn. Kiến trúc ba tầng tồn tại là có lý do

Nhưng, thật thú vị khi điều tra, và như đồng nghiệp của tôi đã nói, sẽ rất tuyệt nếu nó thành công. Nếu bạn vẫn quan tâm, có nhiều hơn về chủ đề này ở đây

Cập nhật tháng 1 năm 2021. HTTP UDF hiện đã có ở đây và một người đọc đã chỉ ra rằng họ gặp sự cố với các hướng dẫn ở trên, nhưng việc triển khai golang UDF đã hoạt động tốt

Bạn có muốn chuyển dữ liệu của mình từ API REST sang MySQL không?

Bài viết này sẽ trình bày chi tiết hai phương pháp tốt nhất để chuyển dữ liệu của bạn từ API REST sang MySQL

Sau khi xem hướng dẫn đầy đủ về blog, bạn có thể thiết lập thành công kết nối giữa máy chủ API REST & MySQL và chuyển dữ liệu của bạn một cách liền mạch để phân tích hiệu quả

Nó sẽ tiếp tục giúp bạn xây dựng một đường dẫn ETL tùy chỉnh cho tổ chức của bạn

Vậy hãy bắt đầu

Mục lục

Phương pháp 1. Sử dụng Dữ liệu Hevo, Đường ống dữ liệu không có mã

Dữ liệu Hevo, Đường ống dẫn dữ liệu không có mã, giúp bạn chuyển dữ liệu từ API REST sang MySQL và cho phép bạn trực quan hóa dữ liệu đó trong công cụ BI

Hevo được quản lý hoàn toàn và hoàn toàn tự động hóa không chỉ tải dữ liệu từ hơn 150 Nguồn dữ liệu mà còn làm phong phú dữ liệu và chuyển đổi dữ liệu thành dạng sẵn sàng phân tích mà không cần phải viết một dòng mã nào

Kiến trúc chịu lỗi của nó đảm bảo rằng dữ liệu được xử lý an toàn và nhất quán mà không bị mất dữ liệu

Bắt đầu với HEVO MIỄN PHÍ

Nó cung cấp một giải pháp nhất quán và đáng tin cậy để quản lý dữ liệu trong thời gian thực và luôn có dữ liệu sẵn sàng cho phân tích ở đích mong muốn của bạn

Nó cho phép bạn tập trung vào các nhu cầu kinh doanh chính và thực hiện phân tích chuyên sâu bằng các công cụ BI khác nhau như Power BI, Tableau, v.v.  

Các bước sử dụng Dữ liệu Hevo

Hevo Data tập trung vào hai bước đơn giản để giúp bạn bắt đầu

  • Định cấu hình nguồn. Kết nối Dữ liệu Hevo với nguồn API REST của bạn bằng cách cung cấp một tên duy nhất cho quy trình của bạn và thông tin về phương pháp bạn muốn sử dụng, chọn giữa GET và POST. Bạn cũng sẽ cần cung cấp URL cho điểm cuối API, gốc dữ liệu cho API và thông tin đăng nhập của bạn như tên người dùng và mật khẩu để cho phép Hevo truy cập dữ liệu của bạn, cùng với thông tin về thông số truy vấn và tiêu đề API của bạn
Nguồn hình ảnh
  • Tích hợp Dữ liệu. Tải dữ liệu từ API REST sang MySQL bằng cách cung cấp thông tin đăng nhập cơ sở dữ liệu MySQL của bạn, chẳng hạn như tên người dùng, mật khẩu được ủy quyền, thông tin về IP máy chủ của bạn và giá trị số cổng. Bạn cũng sẽ cần cung cấp tên cho cơ sở dữ liệu của mình và tên duy nhất cho điểm đến này
Nguồn hình ảnh

Tất cả các khả năng, Không có khả năng chữa cháy

Sử dụng tập lệnh thủ công và mã tùy chỉnh để di chuyển dữ liệu vào kho rất cồng kềnh. Sự cố thường xuyên, lỗi đường ống và thiếu giám sát luồng dữ liệu khiến việc mở rộng hệ thống như vậy trở thành cơn ác mộng

Nền tảng đường dẫn dữ liệu đáng tin cậy của Hevo cho phép bạn thiết lập các đường dẫn dữ liệu không mã và không cần bảo trì chỉ hoạt động

Độ tin cậy ở quy mô – Với Hevo, bạn có được kiến ​​trúc chịu lỗi đẳng cấp thế giới, có thể mở rộng quy mô mà không làm mất dữ liệu và độ trễ thấp.  

Giám sát và Khả năng quan sát – Theo dõi tình trạng đường ống bằng bảng điều khiển trực quan tiết lộ mọi chỉ số của đường ống và luồng dữ liệu. Đưa khả năng hiển thị theo thời gian thực vào ELT của bạn bằng Cảnh báo và Nhật ký hoạt động.  

Luôn kiểm soát hoàn toàn – Khi tự động hóa là không đủ, Hevo cung cấp tính linh hoạt – chế độ nhập dữ liệu, nhập và tần suất tải, phân tích cú pháp JSON, bàn làm việc đích, quản lý lược đồ tùy chỉnh, v.v. – để bạn có toàn quyền kiểm soát.     

Quản lý lược đồ tự động – Việc sửa lược đồ không phù hợp sau khi dữ liệu được tải vào kho của bạn là một thách thức. Hevo tự động ánh xạ lược đồ nguồn với kho đích, vì vậy bạn không phải đối mặt với các lỗi lược đồ

Hỗ trợ khách hàng 24×7 – Với Hevo, bạn không chỉ nhận được một nền tảng. Bạn có được một đối tác cho các quy trình của mình. Khám phá sự bình yên với “Trò chuyện trực tiếp” 24/24 trong nền tảng. Hơn nữa, bạn nhận được hỗ trợ 24×7 ngay cả trong 14 ngày dùng thử miễn phí đầy đủ tính năng

Định giá minh bạch – Nói lời tạm biệt với các mô hình định giá phức tạp và ẩn giấu. Định giá minh bạch của Hevo mang lại khả năng hiển thị đầy đủ cho chi tiêu ELT của bạn. Chọn một kế hoạch dựa trên nhu cầu kinh doanh của bạn. Giữ quyền kiểm soát với các cảnh báo chi tiêu và giới hạn tín dụng có thể định cấu hình cho các đột biến không lường trước được trong luồng dữ liệu.  

Bắt đầu với HEVO MIỄN PHÍ

Phương pháp 2. Sử dụng Đoạn mã tùy chỉnh dựa trên API để tải dữ liệu từ API REST sang MySQL

MySQL hỗ trợ nhiều trình kết nối và API [trình điều khiển] cho phép người dùng thiết lập kết nối giữa các ứng dụng khác nhau và máy chủ cơ sở dữ liệu MySQL bằng nhiều ngôn ngữ lập trình khác nhau
Để sử dụng các trình điều khiển này, bạn phải cài đặt trình điều khiển bằng phân phối nhị phân hoặc xây dựng trình điều khiển từ đầu. Bạn có thể cân nhắc sử dụng các công cụ như Maven nếu bạn định lặp lại bài tập này cho các nguồn dữ liệu hoặc máy chủ MySQL đích khác nhau

Bạn có thể tìm hiểu thêm về cách sử dụng các trình điều khiển và trình kết nối này để tải dữ liệu từ API REST sang MySQL và nhiều khái niệm liên quan đến nó từ các phần sau

Hiểu quy trình chung của việc tải dữ liệu từ API

Để bắt đầu tải dữ liệu từ các API REST, trước tiên bạn phải tận dụng lớp “DriverManager” để lấy và thiết lập kết nối với Máy chủ MySQL của bạn. Bạn có thể sử dụng cú pháp sau để tạo URL kết nối của mình

protocol//[hosts][/database][?properties] 

Có nhiều giao thức mà bạn có thể chọn để thiết lập kết nối với máy chủ MySQL của mình. Đây là như sau

  • jdbc. mysql. Giao thức này giúp thiết lập các kết nối chuyển đổi dự phòng thông thường & JDBC
  • jdbc. mysql. cân bằng tải. Giao thức này hỗ trợ cân bằng tải
  • jdbc. mysql. nhân rộng. Giao thức này giúp thiết lập các kết nối sao chép dựa trên JDBC

Bạn có thể cung cấp một hoặc nhiều tên máy chủ trong “tham số máy chủ”, cùng với số cổng để chỉ định các thuộc tính dành riêng cho máy chủ. Ví dụ: bạn có thể tạo URL kết nối như sau

jdbc:mysql:replication//myUser:myPassword@[address=[host=myHost1][port=1111][key1=value1]]

Khi bạn đã thiết lập các cấu hình cần thiết, bạn cần tạo một đối tượng câu lệnh sẽ thực hiện các thao tác SQL như chèn, xóa, cập nhật, v.v. , và lấy kết quả

Khi đối tượng câu lệnh của bạn đã sẵn sàng, bạn sẽ phải thực hiện lệnh chèn trong một vòng lặp lặp đi lặp lại dựa trên logic điều kiện. Khi bạn đã thực hiện câu lệnh chèn hoặc bất kỳ thao tác nào khác, bạn sẽ cần đóng câu lệnh và đối tượng kết nối

Ví dụ: nếu bạn muốn chèn, đặt và cập nhật các giá trị trong cơ sở dữ liệu MySQL của mình bằng API, bạn có thể thực hiện bằng cách sử dụng các dòng mã sau

While [someCondition] {
	try{     	
//LOAD the API driver 	
	Class.forName["com.mysql.jdbc.Driver"].newInstance[];	
// Obtain a Connection 	   	        
	Connection conn = DriverManager.getConnection[ "jdbc:mysql:replication//myUser:myPassword@[address=[host=myHost1][port=1111][key1=value1]] "];                          

//specify the INSERT statement 				 
	PreparedStatement stmt = conn.prepareStatement["INSERT into my_records" +" VALUES[?,?,?,?,?]"];

// SET the values in your table columns 							
	stmt.setInt[1, 0];					
	stmt.setString[2, myString];					
	stmt.setString[3,myAddress];					
	stmt.setString[4, myName];					
	stmt.setString[5, myRole];

//EXECUTE the update 					
	stmt.executeUpdate[];	
	}// End of TRY block 
	
        catch [Exception e] {
        System.err.println["Error: "];
        e.printStackTrace[System.err]; 
        }

// CLOSE the Statement and Connection objects
	finally {
	stmt.close[]; 					
	conn.close[];     	
	}
} // END of While loop 

Đây là cách bạn có thể tận dụng trình kết nối và trình điều khiển tích hợp sẵn để tải dữ liệu từ API REST sang MySQL

Hiểu tổng hợp kết nối

MySQL cho phép người dùng quản lý dữ liệu đến từ các nguồn khác nhau ở các tốc độ khác nhau và theo các khoảng thời gian bằng cách thiết lập nhiều kết nối bằng chức năng tổng hợp kết nối, giúp tăng hiệu suất của hệ thống của bạn và giảm mức tiêu thụ tài nguyên tổng thể. Bạn có thể tự động gửi các kết nối mới trở lại nhóm với tổng hợp kết nối

Bạn có thể định cấu hình nhóm kết nối cho phiên bản MySQL của mình bằng cách truy cập tệp cấu hình máy chủ ứng dụng bằng Giao diện thư mục và đặt tên Java [JNDI]. Đảm bảo rằng trong khi xác định kích thước cho nhóm kết nối của mình, bạn sẽ theo dõi các tài nguyên như bộ nhớ/CPU/công tắc ngữ cảnh, v.v. , mà bạn có tại chỗ

Hiểu kết nối nhiều máy chủ

Thông thường, trong các hệ thống và cơ sở dữ liệu cấp doanh nghiệp, bạn có thể có nhiều phiên bản MySQL đóng vai trò là bộ thu dựa trên đích cho dữ liệu của bạn. Để quản lý một tập hợp lớn các kết nối cấu thành nhiều máy chủ, cổng, v.v. , bạn phải tận dụng các hoạt động khác nhau như sao chép, chuyển đổi dự phòng, cân bằng tải, v.v.

Hiểu về nén dữ liệu và xác thực lược đồ

MySQL cho phép người dùng tối ưu hóa thời gian truyền và nhập mạng bằng cách tận dụng các kết nối X DevAPI để nén dữ liệu. Để sử dụng các thuật toán nén như vậy, bạn sẽ phải thương lượng với máy chủ và sửa mức độ ưu tiên thương lượng bằng cách sử dụng “xdevapi. thuật toán nén” thuộc tính kết nối

Nó còn cho phép người dùng quản lý dữ liệu đến, chẳng hạn như tài liệu JSON bằng chức năng xác thực lược đồ xác thực từng bộ sưu tập dựa trên lược đồ trước khi chèn hoặc cập nhật bất kỳ dữ liệu nào. Để làm điều này, bạn có thể chỉ định lược đồ JSON trong khi tạo hoặc sửa đổi tập hợp dữ liệu. Sau đó, MySQL sẽ thực hiện xác thực lược đồ ở cấp độ máy chủ khi bạn tạo hoặc cập nhật tài liệu

Nó thậm chí sẽ gửi lỗi, trong trường hợp dữ liệu không hợp lệ với lược đồ.  

Hiểu ghi nhật ký

MySQL theo dõi tất cả các giao dịch cơ sở dữ liệu như truyền dữ liệu, cập nhật, xóa, v.v. , bằng cách duy trì nhật ký toàn diện. Nó cho phép người dùng định cấu hình và quản lý việc bảo trì nhật ký bằng cách sửa đổi/cấu hình các tệp SLF4J và Log4J

Hạn chế của việc sử dụng Đoạn mã khách hàng và API để tải dữ liệu lên MySQL

  • Sử dụng trình điều khiển yêu cầu theo dõi các bản cập nhật và cập nhật chúng theo cách thủ công khi có bản phát hành mới hoặc khi ngăn xếp công nghệ của bạn [Java, Node. js, C++, Python] trải qua các bản cập nhật. Tương tự, với các phiên bản mới, các phương thức và lệnh gọi API hiện tại có thể không dùng nữa và yêu cầu nâng cấp
  • Để đảm bảo truyền dữ liệu trơn tru và hiệu quả cao, bạn sẽ phải thêm/xóa/thay đổi các thuộc tính mới được liên kết với kết nối của mình khi có bất kỳ thay đổi nào xảy ra
  • Làm việc với API để tải dữ liệu yêu cầu kiến ​​thức kỹ thuật vững chắc để xử lý các hoạt động như tổng hợp kết nối, tối ưu hóa truy vấn, nén và xác thực, v.v.

Phần kết luận

Bài viết này hướng dẫn bạn cách dễ dàng tải dữ liệu từ API REST sang MySQL và cung cấp kiến ​​thức chuyên sâu về các khái niệm đằng sau mỗi bước để giúp bạn hiểu và triển khai chúng một cách hiệu quả

Việc triển khai mã tùy chỉnh để tải dữ liệu có thể là một thách thức, đặc biệt đối với người mới bắt đầu & đây là lúc Hevo bước vào.  

Mở rộng quy mô Tích hợp dữ liệu của bạn một cách dễ dàng với Đường ống dữ liệu không có mã chịu lỗi của Hevo

Hơn 1000 nhóm dữ liệu dựa vào Nền tảng đường ống dữ liệu của Hevo để tích hợp dữ liệu từ hơn 150 nguồn trong vài phút

Hàng tỷ sự kiện dữ liệu từ các nguồn đa dạng như ứng dụng SaaS, Cơ sở dữ liệu, Lưu trữ tệp và nguồn Truyền phát có thể được sao chép gần như theo thời gian thực với kiến ​​trúc chịu lỗi của Hevo

Hevo trao toàn quyền kiểm soát cho các nhóm dữ liệu với bảng điều khiển trực quan để theo dõi đường ống, quản lý lược đồ tự động và lịch trình nhập/tải tùy chỉnh.  

Điều này, kết hợp với giá cả minh bạch và hỗ trợ 24×7, khiến Hevo trở thành phần mềm đường dẫn dữ liệu được ưa thích nhất trên các trang web đánh giá

Hãy dùng thử miễn phí 14 ngày của chúng tôi để trải nghiệm cách tốt hơn để quản lý các đường dẫn dữ liệu

Bắt đầu với HEVO MIỄN PHÍ

Ngoài ra, vui lòng cho chúng tôi biết về trải nghiệm của bạn khi tải dữ liệu từ API REST sang MySQL. Chia sẻ ý kiến ​​của bạn bằng cách bình luận xuống dưới

Làm cách nào để kết nối API với MySQL?

Tích hợp dữ liệu. Tải dữ liệu từ API REST sang MySQL bằng cách cung cấp thông tin đăng nhập cơ sở dữ liệu MySQL của bạn, chẳng hạn như tên người dùng, mật khẩu được ủy quyền, thông tin về IP máy chủ của bạn và giá trị số cổng. You will also need to provide a name for your database and a unique name for this destination.

Làm cách nào để thực hiện lệnh gọi API trong MySQL?

Cách duy nhất để MySQL có thể gọi dịch vụ web là thông qua UDF tùy chỉnh . Xem liên kết bên dưới, nhưng về cơ bản, những gì bạn cần làm là xây dựng chương trình C gọi API dịch vụ web từ xa với các biến làm tham số, trả về phản hồi qua UDF cho SQL thực của bạn, có thể chèn kết quả vào bảng.

Bạn có thể gọi API từ SQL không?

Nếu bạn muốn gọi một API, thì bạn nên tạo một thủ tục lưu trữ bên ngoài thay vì thủ tục lưu trữ SQL . Câu lệnh SQL CALL thực sự chỉ nên được sử dụng để gọi thủ tục lưu sẵn SQL hoặc các thủ tục lưu sẵn bên ngoài đã được đăng ký với câu lệnh CREATE PROCEDURE.

MySQL có thể kích hoạt lệnh gọi REST API không?

Nếu bạn có một bảng mysql mà bạn đang theo dõi các thay đổi, bạn có thể sử dụng trình kích hoạt để làm như vậy [miễn là bạn có phiên bản msyql bán hiện đại]. Sometimes you might want to notify another service of any change [remote logging service, message queue, etc].

Chủ Đề