Amazon Athena Neptune 連接器
Amazon Neptune 是快速、可靠、全受管的圖形資料庫服務,可讓您輕鬆建置和執行搭配高度連線資料集使用的應用程式。專門打造的 Neptune 高效能圖形資料庫引擎可將數十億筆關係以最佳化方式存放,且查詢圖形時只會產生數毫秒的延遲。如需詳細資訊,請參閱《Neptune 使用者指南》。
Amazon Athena Neptune 連接器讓 Athena 能夠與您的 Neptune 圖形資料庫執行個體通訊,以便使用 SQL 查詢來存取您的 Neptune 圖形資料。
此連接器不會使用 Glue 連線來集中 Glue 中的組態屬性。連線組態是透過 Lambda 完成的。
如果您的帳戶中已啟用 Lake Formation,則您在 AWS Serverless Application Repository 中部署的 Athena 聯合 Lambda 連接器的 IAM 角色在 Lake Formation 中必須具有 AWS Glue Data Catalog 的讀取存取權。
必要條件
使用 Neptune 連接器需要以下三個步驟。
-
設定 Neptune 叢集
-
設定 AWS Glue Data Catalog
-
將連接器部署到您的 AWS 帳戶。如需詳細資訊,請參閱 建立資料來源連線 或 使用 AWS Serverless Application Repository 部署資料來源連接器 。如需特定於部署 Neptune 連接器的其他詳細資訊,請參閱 GitHub.com 上的部署 Amazon Athena Neptune 連接器
。
限制
目前,Neptune 連接器會有下列限制。
-
不支援投影資料欄,包括主索引鍵 (ID)。
設定 Neptune 叢集
如果您沒有想要使用的現有 Amazon Neptune 叢集和屬性圖資料集,則必須設定一個。
確保在託管 Neptune 叢集的 VPC 中具有網際網路閘道和 NAT 閘道。Neptune 連接器 Lambda 函數使用的私有子網應具有透過此 NAT 閘道連線至網際網路的路由。Neptune 連接器 Lambda 函數使用 NAT 閘道與 AWS Glue 通訊。
如需有關設定新 Neptune 叢集並使用範例資料集載入它的說明,請參閱 GitHub.com 上的 Sample Neptune Cluster Setup
設定 AWS Glue Data Catalog
與傳統的關聯式資料存放區不同,Neptune 圖形資料庫節點和邊緣不使用集結構描述。每個條目可以有不同的欄位和資料類型。不過,由於 Neptune 連接器會從 AWS Glue Data Catalog 中擷取中繼資料,因此您必須建立 AWS Glue 資料庫,其中包含具有所需結構描述的資料表。建立 AWS Glue 資料庫和資料表之後,連接器會填充可從 Athena 查詢的資料表清單。
啟用不區分大小寫的資料欄比對
若要使用正確的大小寫來解析 Neptune 資料表中的資料欄名稱,即使 AWS Glue 中資料欄名稱都是小寫也一樣,您可以設定 Neptune 連接器以進行不區分大小寫的比對。
若要啟用此功能,請將 Neptune 連接器 Lambda 函數環境變數 enable_caseinsensitivematch 設定為 true。
指定大小寫資料表名稱的 AWS Glue glabel 資料表參數
由於 AWS Glue 僅支援小寫資料表名稱,因此當您為 Neptune 和 Neptune 資料表名稱 (包括大小寫) 建立 AWS Glue 資料表時,請務必指定 glabel AWS Glue 資料表參數。
在您的 AWS Glue 資料表定義中,包括 glabel 參數,並使用其原始大小寫將其值設定為資料表名稱。這能確保在 AWS Glue 與 Neptune 資料表互動時保留正確的大小寫。下列範例會將 glabel 的值設定為資料表名稱 Airport。
glabel = Airport
如需有關設定 AWS Glue Data Catalog 以便與 Neptune 搭配使用的詳細資訊,請參閱 GitHub.com 上的設定 AWS Glue 目錄
效能
Athena Neptune 連接器執行述詞下推,以減少查詢掃描的資料。不過,使用主索引鍵的述詞會導致查詢失敗。LIMIT 子句可減少掃描的資料量,但是如果您未提供述詞,則應期望具有 LIMIT 子句的 SELECT 查詢掃描至少 16 MB 的資料。Neptune 連接器由於並行而對限流保有彈性。
傳遞查詢
Neptune 連接器支援傳遞查詢。您可以使用此功能對屬性圖執行 Gremlin 查詢,以及對 RDF 資料執行 SPARQL 查詢。
若要透過 Neptune 建立傳遞查詢,請使用下列語法:
SELECT * FROM TABLE( system.query( DATABASE => 'database_name', COLLECTION => 'collection_name', QUERY => 'query_string' ))
下列範例 Neptune 傳遞查詢會篩選代碼為 ATL 的機場。雙引號用於逸出。
SELECT * FROM TABLE( system.query( DATABASE => 'graph-database', COLLECTION => 'airport', QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' ))
其他資源
如需此連接器的其他資訊,請造訪 GitHub.com 上的相應網站