Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Phiên bản 1.4.2
Thực hiện các thao tác chèn, truy vấn và cập nhật trên cơ sở dữ liệu Cloud Spanner.
Nội dung này cung cấp tài liệu tham khảo để định cấu hình và sử dụng tiện ích này. Trước khi sử dụng tiện ích của proxy API bằng Chính sách về chú thích tiện ích, bạn phải:
Tạo một thực thể Cloud Spanner như mô tả trong phần Tạo và quản lý các phiên bản rồi tạo cơ sở dữ liệu.
Sau khi bạn có thực thể và cơ sở dữ liệu, hãy cấp quyền truy cập vào cơ sở dữ liệu cho tài khoản dịch vụ GCP đại diện cho tiện ích của bạn. Để biết thêm thông tin về vai trò bạn muốn sử dụng, hãy xem bài viết Các vai trò trong Cloud Spanner. Để biết thêm thông tin về việc kiểm soát quyền truy cập của Cloud Spanner, hãy xem bài viết Áp dụng vai trò trong IAM và Kiểm soát quyền truy cập cho Cloud Spanner.
Khi bạn có một tài khoản dịch vụ và có quyền quy định cấp truy cập vào cơ sở dữ liệu mà bạn muốn, hãy sử dụng Bảng điều khiển GCP để tạo khoá cho tài khoản dịch vụ. Sử dụng nội dung của tệp JSON chứa khoá thu được khi bạn định cấu hình tiện ích này.
Sử dụng nội dung của tệp JSON của khoá thu được khi thêm và định cấu hình tiện ích bằng cách sử dụng tài liệu tham khảo về cấu hình.
Giới thiệu về Cloud Spanner
Cloud Spanner là một dịch vụ cơ sở dữ liệu quan hệ hữu ích cho dữ liệu quan hệ, có cấu trúc và bán cấu trúc, đòi hỏi khả năng sử dụng cao, tính nhất quán cao cũng như khả năng đọc và ghi giao dịch.
Nếu bạn mới bắt đầu sử dụng Cloud Spanner, thì tài liệu hướng dẫn bắt đầu nhanh trong Cloud Spanner là phù hợp để bắt đầu.
Mẫu
Các ví dụ sau minh hoạ cách định cấu hình tính năng hỗ trợ các thao tác với tiện ích Cloud Spanner bằng Chính sách về tiện ích mở rộng.
Thêm dữ liệu
Trong ví dụ sau, hành động insert
của tiện ích sẽ thêm một người dùng mới vào bảng người dùng.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Insert-New-User">
<DisplayName>Insert New User</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
</ConnectorCallout>
Lấy dữ liệu
Trong ví dụ này, một truy vấn truy xuất các giá trị tên người dùng và email từ bảng user
.
Trước tiên, assignMessage chính sách chỉ định một biến postal.code.value
để sử dụng trong truy vấn WHERE. Đây là một ví dụ. Chính sách của bạn có thể sẽ đặt giá trị dựa trên các thông số yêu cầu của ứng dụng khách.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Postal-Code">
<AssignTo createNew="true" transport="http" type="request"/>
<AssignVariable>
<Name>postal.code</Name>
<Value>86519</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
Chính sách ExtensionAnnotation sau đây thực thi truy vấn dựa trên cơ sở dữ liệu bằng cách sử dụng nội dung của biến postal.code.value
trong mệnh đề WHERE.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-User-Data">
<DisplayName>Get User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
<Output>spanner.userdata.retrieved</Output>
</ConnectorCallout>
Sau đó, assignMessage chính sách sau đó sẽ sử dụng phản hồi của tiện ích,
được lưu trữ trong biến spanner.userdata.retrieved
vì phản hồi đã được trả về
cho khách hàng.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Query-Response-Data">
<DisplayName>Get Query Response Data</DisplayName>
<AssignTo type="response" createNew="false"/>
<Set>
<Payload contentType="application/json">{spanner.userdata.retrieved}</Payload>
</Set>
</AssignMessage>
Trong ví dụ này, dữ liệu phản hồi được trả về dưới dạng JSON, chẳng hạn như sau.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Cập nhật dữ liệu
Trong ví dụ này, phần tử <Input>
chứa username
(khoá chính của bảng) và một giá trị mới cho cột email
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Update-User-Data">
<DisplayName>Update User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
</ConnectorCallout>
Thao tác
insert
Chèn các dòng được chỉ định vào cơ sở dữ liệu.
Cú pháp
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "table-to-insert-into",
"rows" : "rows-to-insert"
}]]></Input>
Ví dụ:
Trong ví dụ sau, hành động insert
của tiện ích sẽ thêm một người dùng mới vào bảng người dùng. Đã thêm một hàng.
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
Yêu cầu thông số
Thông số | Mô tả | Loại | Mặc định | Bắt buộc |
---|---|---|---|---|
tableName | Bảng trong cơ sở dữ liệu mà các hàng sẽ được chèn vào. | Chuỗi | Không có. | Có. |
hàng | Các hàng cần chèn được biểu thị dưới dạng một mảng trong đối tượng JSON rows . |
Mảng | Không có. | Có. |
Phản hồi
Không có.
querySQL
Truy vấn cơ sở dữ liệu bằng câu lệnh SQL với các tham số được chỉ định. Các tham số được cung cấp trong câu lệnh SQL có tên có tiền tố @; các giá trị tham số được chỉ định trong tham số params
của hành động này.
Để biết thông tin chi tiết về cú pháp truy vấn Cloud Spanner, hãy xem phần Cú pháp truy vấn.
Cú pháp
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
Ví dụ:
Trong ví dụ này, một truy vấn truy xuất các giá trị cột username
và email
từ bảng user
. Câu lệnh SQL chỉ định tham số postalCode
được đặt từ biến luồng postal.code.value
.
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
Yêu cầu thông số
Thông số | Mô tả | Loại | Mặc định | Bắt buộc |
---|---|---|---|---|
sql | Truy vấn SQL cần thực thi. Bạn có thể chỉ định tham số có tên thông số có đuôi @. Các tên tham số đó phải tương ứng với các khoá trong tham số params của hành động này. |
Chuỗi | Không có. | Có. |
tham số | Một đối tượng có khoá và giá trị là tên và giá trị của tham số dùng trong truy vấn SQL. Bạn có thể liệt kê nhiều tham số tại đây. | Đối tượng | Không có. | STT |
Phản hồi
Đối tượng rows
chứa một mảng gồm các cặp tên-giá trị của cột do truy vấn trả về. Ví dụ:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
cập nhật
Cập nhật các hàng trong cơ sở dữ liệu bằng dữ liệu được chỉ định.
Cú pháp
<Input><![CDATA[{
"tableName" : "table-with-rows-to-update",
"rows" : "rows-to-update"
}]]></Input>
Ví dụ:
Trong ví dụ này, địa chỉ email của người dùng có username
là Liz456 được cập nhật giá trị mới. Đã cập nhật một hàng.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
Yêu cầu thông số
Thông số | Mô tả | Loại | Mặc định | Bắt buộc |
---|---|---|---|---|
tableName | Bảng trong cơ sở dữ liệu nơi các hàng phải được cập nhật. | Chuỗi | Không có. | Có. |
hàng | Một mảng dữ liệu hàng cần cập nhật. Mỗi thực thể trong mảng phải chứa giá trị mã nhận dạng duy nhất (chẳng hạn như khoá chính) cho hàng cần cập nhật. | Mảng | Không có. | Có. |
Phản hồi
Không có.
Tham chiếu cấu hình
Sử dụng mã sau khi bạn định cấu hình và triển khai tiện ích này để sử dụng trong proxy API. Để biết các bước định cấu hình một tiện ích bằng bảng điều khiển Apigee, hãy xem bài viết Thêm và định cấu hình tiện ích.
Các thuộc tính tiện ích phổ biến
Các thuộc tính sau có sẵn cho mỗi tiện ích.
Tài sản | Mô tả | Mặc định | Bắt buộc |
---|---|---|---|
name |
Tên mà bạn đang đặt cho cấu hình của tiện ích này. | Không có | Có |
packageName |
Tên của gói tiện ích do Apigee Edge cung cấp. | Không có | Có |
version |
Số phiên bản của gói tiện ích mà bạn đang định cấu hình tiện ích. | Không có | Có |
configuration |
Giá trị cấu hình cụ thể cho tiện ích bạn đang thêm. Xem Thuộc tính cho gói tiện ích này | Không có | Có |
Các thuộc tính của gói tiện ích này
Chỉ định giá trị cho các thuộc tính cấu hình sau dành riêng cho tiện ích này.
Thuộc tính | Mô tả | Mặc định | Bắt buộc |
---|---|---|---|
mã dự án | Mã của dự án GCP chứa cơ sở dữ liệu. | Không có. | Có. |
instanceId | Mã của thực thể Cloud Spanner trong dự án GCP của bạn. | Không có. | Có. |
mã cơ sở dữ liệu | Mã nhận dạng của cơ sở dữ liệu Cloud Spanner. | Không có. | Có. |
thông tin xác thực | Khi được nhập vào bảng điều khiển của Apigee Edge, đây là nội dung của tệp khoá tài khoản dịch vụ của bạn. Khi được gửi qua API quản lý, giá trị này là một giá trị được mã hoá base64 được tạo từ tệp khoá tài khoản dịch vụ. | Không có. | Có. |