ANSI 連線

本章描述瞭如何在實體之間使用 ANSI Join。從 5.5 版本開始,Couchbase 伺服器支援使用欄位連線文件的 ANSI Join。以前的版本允許索引和查詢 Join,這在 SDC 中只能透過 SDK 直接查詢來支援。

跨儲存庫的實體之間的關係可以是一對一或一對多。透過定義此類關係,可以獲取關聯實體的同步檢視。

配置

透過使用 @N1qlJoin 註解實體的屬性引用,可以獲取關聯實體。字首 lks 指左側鍵空間(當前實體),rks 指右側鍵空間(關聯實體)。@N1qlJoin 註解的必需元素是 on 子句,它是一個布林表示式,表示左側 (lks) 和右側 (rks) 之間的連線條件,可以是欄位、常量表達式或任何複雜的 N1QL 表示式。還可以在註解上為 Join 指定一個可選的 where 子句,同樣使用 lks 指代當前實體,使用 rks 指代關聯實體。

示例 1. ANSI Join 註解
@Document
public class Author {
      @Id
      String id;

      String name;

      @N1qlJoin(on = "lks.name=rks.authorName")
      List<Book> books;

      @N1qlJoin(on = "lks.name=rks.name")
      Address address;
     ...
}

延遲載入

關聯實體可以在首次訪問屬性時延遲載入,這可以節省在載入實體時獲取比所需更多的資料。要延遲載入關聯實體,@N1qlJoin 註解的元素 fetchType 必須設定為 FetchType.LAZY。預設值為 FetchType.IMMEDIATE

示例 2. 延遲載入配置
@N1qlJoin(on = "lks.name=rks.authorName", fetchType = FetchType.LAZY)
List<Book> books;

ANSI Join 提示

使用索引提示

@N1qlJoin 上的 index 元素可用於為 lks(當前實體)索引提供提示,rightIndex 元素可用於為 rks(關聯實體)索引提供提示。

雜湊 Join 提示

如果連線型別是雜湊 Join,則可以為 rks(關聯實體)指定雜湊側。如果關聯實體在構建側,則可以將其指定為 HashSide.BUILD,否則為 HashSide.PROBE

使用鍵提示

@N1qlJoin 註解上的 keys 元素可用於指定唯一的文件鍵以限制連線鍵空間。

© . This site is unofficial and not affiliated with VMware.