Linux 上でCouchDB のデータに接続するGo アプリケーションを作成する方法

古川えりか
古川えりか
コンテンツスペシャリスト
CData ODBC Driver とunixODBC を使って、CouchDB に連携するGo アプリケーションを作成。

Go はオープンソースのプログラミング言語で、高速かつ信頼性の高いソフトウェアを低コストで作成できるのが魅力です。Go とODBC Driver for ApacheCouchDB およびunixODBC を組み合わせて使うことで、CouchDB のデータにリアルタイムで 接続するアプリケーションを作成できます。本記事では、ODBC Driver for ApacheCouchDB のインストール、unixODBC Driver Manager への設定、そしてCouchDB に連携するGo アプリケーションの作成までを説明します。

CData ODBC ドライバとは?

CData ODBC ドライバは、以下のような特徴を持った製品です。

  1. CouchDB をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレデータソースに対応
  2. Go をはじめとする多様な開発ツールやノーコードアプリ、BI ツールにCouchDB のデータを連携
  3. ノーコードでの手軽な接続設定

CData ODBC ドライバでは、1.データソースとしてCouchDB の接続を設定、2.Go 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。

Linux マシンで CData ODBC Drivers を使用する

CData ODBC Drivers はUbuntu、Debian、RHEL、CentOS、およびFedora など多くのRed Hat ベースおよびDebian ベースのシステムでサポートされています。 ほかにもいくつかのライブラリやパッケージのインストールが必要ですが、すでにデフォルトでインストールされている場合もあります。詳細はオンラインおよびインストールされるヘルプドキュメントの「はじめに」のセクションを参照してください。

Driver Manager のインストール

ドライバーのインストール前にシステムにDriver Manager が入っているかを確認してください。本記事では無料のオープンソースDriver Manager であるunixODBC を使います

Ubuntu のようなDebian ベースのシステムでは、APT パッケージマネージャからunixODBC をインストールできます:

$ apt-get install unixODBC unixODBC-dev

Red Hat Linux ベースのシステムでは、yum もしくはdnf からunixODBC をインストールできます:

$ yum install unixODBC unixODBC-devel

unixODBC Driver Manager はDriver の情報をodbcinst.ini ファイルから読み、odbc.ini からデータソースの情報を読みます。 次のコマンドをターミナルに入力して、設定ファイルの配置場所を決めることができます:

$ odbcinst -j

コマンドのアウトプットでODBC データソースのコンフィギュレーションファイルと登録されたODBC Drver のロケーションを表示します。 ユーザーデータソースはodbc.ini ホームフォルダが位置するユーザーアカウントのみからアクセス可能です。システムデータソースはすべてのユーザーからアクセスできます。 このコマンドのアウトプット例は以下です:

DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/myuser/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

ドライバーのインストール

パッケージ形式でドライバーをダウンロードできます。.deb 形式もしくは、.rpm 形式で提供しています。 ファイルをダウンロードしたら、ターミナルからドライバーをインストールします。

ドライバーインストーラーはドライバーをunixODBC に登録し、ODBC 接続をサポートするツールやアプリケーションから利用できるシステムDSN を作成します。T

Ubuntu のようなDebian ベースのシステムでは、sudo で次のコマンドを実行します:

$ dpkg -i /path/to/package.deb

.rpms をサポートするシステムでは、sudo で次のコマンドを実行します:

$ rpm -i /path/to/package.rpm

ドライバーのインストールが終わったら、unixODBC Driver Manager を使って登録されたドライバーを表示し、データソースを定義することができます。

登録されたドライバーの表示

$ odbcinst -q -d
CData ODBC Driver for ApacheCouchDB
...

定義されたData Source の表示

$ odbcinst -q -s
CData ApacheCouchDB Source
...

unixODBC でCData ODBC Driver for ApacheCouchDB を使用するには、ドライバーがUTF-8 を使用するように設定する必要があります。それには、通常はインストールフォルダのlib フォルダ(/opt/cdata/cdata-odbc-driver-for-apachecouchdb)に入っているドライバーのINI ファイル(cdata.odbc.apachecouchdb.ini)を次のように編集する必要があります:

cdata.odbc.apachecouchdb.ini

...

[Driver]
DriverManagerEncoding = UTF-16

DSN の変更

ドライバーがインストールされると、システムDSN が事前定義されます。システムDSN はシステムデータソースファイル(/etc/odbc.ini)を編集して必要な接続プロパティを定義します。 ユーザー単位のDSN を作成することも可能で、その際には$HOME/.odbc.ini へのアクセスと変更は必要ありません

Apache CouchDB 接続プロパティの取得・設定方法

それでは、Apache CouchDB に接続していきましょう。Url 接続プロパティをApache CouchDB インスタンスのURL に設定します。例:http://localhost:5984

ユーザー(またはJWT)が特定のデータベースだけにアクセスできるようにしたい場合は、Apache CouchDB インスタンスで"admin_only_all_dbs" オプションを設定し、テーブルをリストするためにCData 製品が必要とする"/_all_dbs" エンドポイントへのアクセス権をすべてのユーザーに付与する必要があります。

Apache CouchDB への認証

続いて、認証方法を設定しましょう。CData 製品では、3種類の認証をサポートしています。

  • Basic:基本的なユーザー名 / パスワード認証
  • JWT:JWT 認証
  • None:パブリックなデータベースへの匿名アクセス

Basic 認証

データに接続するには、以下のプロパティを設定してください。

  • AuthSchemeBasic
  • User:認証に使用されるApache CouchDB ユーザーアカウント
  • Password:認証するユーザーに関連付けられたApache CouchDB パスワード

その他の認証方法については、ヘルプドキュメントの「接続の確立」セクションをご確認ください。

/etc/odbc.ini or $HOME/.odbc.ini

[CData ApacheCouchDB Source]
Driver = CData ODBC Driver for ApacheCouchDB
Description = My Description
Url = http://localhost:5984
User = abc123
Password = abcdef

これらのコンフィギュレーションファイルの使い方についての詳細は、インストールされるヘルプドキュメントを参照してください。

CouchDB のデータに連携するGo アプリケーションサンプルの作成

Driver Manager のインストール、DSN 設定を終えたら、CouchDB のデータ に連携するGo アプリケーションを作成します。 まずはODBC データベース向けのGo ドライバーをインストールします。いくつかのオプションがありますが、本記事ではhttps://github.com/alexbrainman/odbc のODBC ドライバーを使います。

Linux へのODBC のインストール

Go のODBC ドライバーをインストールするには、GOPATH 環境変数を定義する必要があります:

export GOPATH=$HOME/golang/go

GOPATH が定義されたら、ODBC ドライバー向けのGo ドライバーをインストールすることが可能です:

$ go get github.com/alexbrainman/odbc

これでGo アプリケーションを作って実行する準備ができました。

Go アプリケーションサンプル

このサンプルアプリケーションはCouchDB のデータ に対してシンプルなSQL SELECT クエリを発行し、結果を表示します。$GOPATH/src/cdata-odbc-couchdb ディレクトリを作成し、次のソースコードをコピーして新しいGo ファイルを作成します。

cdata-odbc-couchdb.go

package main

import (
  _ "github.com/alexbrainman/odbc"
  "database/sql"
  "log"
  "fmt"
)

func main() {
  db, err := sql.Open("odbc",
    "DSN=CData ApacheCouchDB Source")
  if err != nil {
    log.Fatal(err)
  }

  var (
    movieruntime string
    movierating string
  )

  rows, err := db.Query("SELECT MovieRuntime, MovieRating FROM Movies WHERE MovieRating = ?", "R")
  if err != nil {
    log.Fatal(err)
  }
  defer rows.Close()
  for rows.Next() {
    err := rows.Scan(&movieruntime, &movierating)
    if err != nil {
      log.Fatal(err)
    }
    fmt.Println(movieruntime, movierating)
  }
  err = rows.Err()
  if err != nil {
    log.Fatal(err)
  }

  defer db.Close()
}

ターミナルでGo アプリケーションディレクトリに移動して、アプリケーションをビルドします。

$ go build

アプリケーションのビルド後、アプリケーションを実行してCouchDB のデータを表示することができます。

$ ./cdata-odbc-couchdb

おわりに

このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをGo から扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。

日本のユーザー向けにCData ODBC ドライバは、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。

はじめる準備はできましたか?

CouchDB ODBC Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

CouchDB Icon CouchDB ODBC Driver お問い合わせ

CouchDB ODBC Driver を使って、ODBC 接続をサポートするあらゆるアプリケーション・ツールからCouchDB にデータ連携。

CouchDB データにデータベースと同感覚でアクセスして、CouchDB に使い慣れたODBC インターフェースで双方向連携。