データベースにつなぐ —— MySQL、SQL Server、Oracle、Hana
4 つの JDBC ソース、ウィザード 4 段階の詳細、同期のたびに新しい分だけを取るための増分フィールドの選び方、そして段階が通らないときのエラーの読み方。
このマニュアルの日本語は解説文です。アプリの画面表示は英語のため、メニュー名・ボタン名・エラーメッセージは画面どおり英語で表記し、スクリーンショットも英語画面のものを使っています。
始める前に
データベースがこのパソコンから到達できる必要があります。デスクトップ版のエンジンはローカルで動くので、許可すべきクラウドの IP はありません —— ただし社内 VPN の向こうにあるなら VPN を上げておく必要がありますし、ファイアウォールの内側ならこの機械のアドレスを許可してもらう必要があります。手早い確認方法:この機械の何かのデータベースクライアントから一度つないでみることです。そこで失敗するなら、ウィザードでも失敗します。
読み取り専用のアカウントを用意してください。TableDI が必要とするのは、引いてくる表への SELECT だけです。
手順 1:Connection Settings
ホスト、ポート、データベース名、ユーザー名、パスワード。接続は保存され、使い回せます。1 つのデータベース、複数の表、資格情報は 1 組。
手順 2:Channel Settings
何を取るか。表を選ぶか、結合や絞り込みが要るなら SQL 文を書きます。再読み込みの頻度もここですし、Incremental Field を選ぶのもここです。
増分フィールドは前へしか進まない列のことで、これがあると同期のたびに「前回より新しい行」だけを要求できます。項目自身のヘルプがはっきり書いています —— *the incremental field should be a column that updates dynamically, for example lastUpdateTime*。自動採番の id でも構いません。指定しなければ毎回まるごと読みます。正しくはありますが遅く、重複を積み上げないために主キーが必要になります。
手順 3:Date Selection
返ってきた行をプレビューし、どのフィールドを表に入れるか決めます。使わない列を落とすのはここです —— 細い表のほうが速く、読みやすくなります。
手順 4:Data Binding
フィールドを表の列に対応づけます。新しい表ならフィールド名で列が作られます。Complete で接続一覧に戻り、最初の同期が走ります。
データを正直に保つために
- 主キーを設定してください。 データベース側の主キーをそのまま使います。そうすれば再読み込みは重複ではなく更新になります。
- 削除された行は消えません。 接続は「そこにあるもの」を読むだけで、「何が消えたか」は知りません。本当のミラーが要るなら、追加ではなく置き換えるチャネルを使うか、定期的に空にして読み直します。
- 元のスキーマ変更はこちらでも確認が要ります。 データベース側でテキストになった列はテキストとして入ってきます。スキーマを変えたら列の型を確かめてください。
うまくいかないとき
| 症状 | だいたいの原因 |
|---|---|
| Connection Settings が通らない | 経路がない、ファイアウォールがポートを塞いでいる、資格情報が違う。まず同じ内容をこの機械のデータベースクライアントで試してください |
| Channel Settings に表が出ない | そのアカウントにそのデータベースの読み取り権限がない、またはスキーマが違う |
| Sync Error | データベースが再起動した、パスワードが変わった、SQL が参照している列が消えた。状態をクリックすると詳細が出ます |
| 行が増え続け、重複する | 主キーがない、または増分フィールドの選び方が違う |