MongoDB

若要新增資料庫連線,請按一下右上角的齒輪圖示,然後導覽至管理設定 > 資料庫 > 新增資料庫

支援的版本

Metabase 支援 MongoDB 最舊的支援版本,直到最新的穩定版本。請參閱MongoDB 軟體生命週期排程

連線至 MongoDB

有兩種方式可以連線至 MongoDB

  1. 使用 Metabase 欄位輸入您的連線詳細資訊
  2. 貼上您的連線字串

使用 Metabase 欄位

連線至 MongoDB 的預設方式是在 Metabase 提供的欄位中填寫您的連線詳細資訊

  • 主機
  • 資料庫名稱
  • 連接埠
  • 使用者名稱
  • 密碼
  • 驗證資料庫 (選用)
  • 其他連線字串選項 (選用)

您也可以選擇使用安全連線 (SSL)。啟用 SSL,並將伺服器的 SSL 憑證鏈內容貼到輸入文字方塊中。此選項僅適用於此連線方法 (即,使用連線字串連線時,您無法包含憑證)。

直接連線的進階設定

  • 連線時使用 DNS SRV 使用此選項需要提供的主機是 FQDN。若要連線至 Atlas 叢集,您可能需要啟用此選項。如果您不知道這是什麼意思,請保持停用。

使用連線字串

如果您偏好使用連線字串連線至 MongoDB,請按一下貼上連線字串。Metabase 使用者介面將會更新,並顯示一個欄位以貼上您的連線字串。

Metabase 目前不支援下列連線字串參數

  • tlsCertificateKeyFile
  • tlsCertificateKeyFilePassword
  • tlsCAFile

如果您需要使用憑證,請透過預設方法連線,並啟用使用安全連線 (SSL)

兩種連線選項通用的設定

  • 使用 SSH 通道:某些資料庫安裝只能透過 SSH 跳板主機連線來存取。當 VPN 無法使用時,此選項也提供額外的安全性層級。啟用此選項通常比直接連線慢。
  • 重新執行簡單探索的查詢:當此選項開啟時,當使用者在使用 [摘要] 和 [篩選條件] 按鈕檢視表格或圖表時,進行簡單探索時,Metabase 會自動執行查詢。如果查詢此資料庫速度很慢,您可以關閉此選項。此設定不會影響鑽取或 SQL 查詢。
  • 選擇同步和掃描發生的時間:依預設,Metabase 會執行輕量型的小時同步,以及密集的每日欄位值掃描。如果您有大型資料庫,我們建議您開啟此選項,並檢閱欄位值掃描發生的時間和頻率。
  • 定期重新指紋表格:此設定 (預設為停用) 可讓 Metabase 在同步期間掃描其他欄位值,從而實現更智慧的行為,例如改進長條圖上的自動分箱。

連線至 MongoDB Atlas 叢集

您可以將 Metabase 與 Atlas 專用和共用叢集搭配使用。Metabase 目前不支援 Atlas Serverless。

將 IP 位址加入白名單

如果您使用 Metabase Cloud,則需要在 Atlas 叢集中將 Metabase Cloud IP 位址加入白名單。如果您使用自我託管的 Metabase,則需要將 Metabase 執行個體的 IP 加入白名單。

  1. 登入您的 Atlas 叢集
  2. 前往網路存取
  3. 新增 Metabase 用於連線的 IP 位址。

將 Metabase 連線至您的 Atlas 叢集

Atlas「連線」介面中提供的連線字串不包含資料庫。Metabase 需要您在連線時提供資料庫名稱,因此您需要編輯連線字串以新增資料庫名稱。

  1. 登入您的 Atlas 帳戶

  2. 選取您要連線的叢集,然後按一下連線

    Your cluster screengrab

  3. 選取驅動程式

  4. 將您的連線字串新增至您的應用程式程式碼區段複製連線字串。

    Connect screengrab

  5. 在 Metabase 中,前往 [管理] -> [資料庫],然後按一下 [新增資料庫] 按鈕。
  6. 從下拉式選單中選取 [MongoDB],然後輸入此資料庫的顯示名稱
  7. 按一下 [「貼上連線字串」],然後貼上您的連線字串。
  8. 編輯連線字串,以在 / 後面包含資料庫名稱

    mongodb+srv://metabot:metapass@my-test-cluster.a5ej7.mongodb.net/DATABASE_NAME?retryWrites=true&w=majority&appName=my-test-cluster
    

如果您使用 Metabase 欄位來輸入 Atlas 叢集的連線資訊,而不是使用連線字串,您可能需要開啟連線時使用 DNS SRV

查看關於進階選項的詳細資訊。

透過命令列設定 SSL

您可以透過 Metabase UI 輸入自我簽署憑證 (但使用連線字串時則不行),或者您可以使用命令列新增自我簽署憑證。

cp /usr/lib/jvm/default-jvm/jre/lib/security/cacerts ./cacerts.jks
keytool -import -alias cacert -storepass changeit -keystore cacerts.jks -file my-cert.pem

然後,使用存放區啟動 Metabase

java -Djavax.net.ssl.trustStore=cacerts.jks -Djavax.net.ssl.trustStorePassword=changeit -jar metabase.jar

深入瞭解使用 MongoDB 設定 SSL

Metabase 如何在 MongoDB 中同步資料

由於 MongoDB 包含非結構化資料,因此 Metabase 採用不同的方法來同步資料庫的元數據。為了瞭解綱要,Metabase 將查詢前 500 個和後 500 個文件 (大部分計算都在 MongoDB 中完成)。此取樣有助於 Metabase 執行一些操作,例如區分日期時間欄位和字串欄位,並為使用者提供預先填入的篩選條件。Metabase 僅掃描文件範例的原因是,在每次同步時掃描每個集合中的每個文件會對您的資料庫造成太大壓力。雖然取樣在保持 Metabase 處於最新狀態方面做得相當好,但這也可能表示新欄位有時會遺漏,導致視覺化問題,甚至欄位無法顯示在您的結果中。如需更多資訊,請查看我們的疑難排解指南

一般連線考量

  • 使用 DNS SRV 連線,這是較新 Atlas 叢集的建議方法。
  • 您是否已檢查您的叢集主機白名單? 在測試連線但看到失敗時,您是否嘗試將 IP 白名單設定為 0.0.0.0/0?將此位址加入白名單允許來自任何 IP 位址的連線。如果您知道用戶端的 IP 位址或 CIDR 區塊,請改用該位址。
  • 連線至次要伺服器。連線至叢集時,請務必在連線字串中使用 ?readPreference=secondary 引數,這可讓 Metabase 從次要伺服器讀取,而不是從主要伺服器耗用資源。

我將欄位新增至資料庫,但在 Metabase 中看不到它們

Metabase 可能不會同步您所有的欄位。由於 MongoDB 集合中的任何文件都可以包含任意數量的欄位,因此取得所有欄位 100% 涵蓋率的唯一方法是掃描每個集合中的每個文件。Metabase 不執行完整掃描的原因是,這會對您的資料庫造成太大壓力。

相反地,Metabase 會掃描每個集合中的 1000 個文件範例 (每個集合中的前 500 個文件和後 500 個文件),以取得集合中欄位的範例。

如果您在 Metabase 中看不到集合的所有欄位,一個解決方法是在集合的第一個文件中包含所有可能的索引鍵,並為這些索引鍵提供空值。這樣一來,Metabase 將能夠辨識整個集合的正確綱要。

延伸閱讀

請參閱我們的疑難排解指南,以瞭解疑難排解您的連線

閱讀其他Metabase 版本的文件。