💧

Windows PC で Mashu サーバーを評価する

2023/08/04に公開

はじめに

弊社が Data Fabric を構成する第一弾のサービスとして、8/4 にローンチしたデータカタログ(メタデータ管理)サービス「Mashu」の提供する機能のうち、オンプレミスのデータベースのメタ情報をクラウドへ連携するための仕組み「Mashu サーバー」を評価頂くための記事です。

弊社が提唱する Data Fabric の考え方につきましては、以下の記事をご参照ください。
https://zenn.dev/robon/articles/3e8a0722a75469

また、Mashu の製品情報に関する詳細につきましては、以下のサイトをご覧ください。
https://services.robon.co.jp/mashu

評価しましょう

Mashu とは

  • SaaS で提供されるデータカタログ(メタデータ管理システム)です
  • RDBMS や Datalake など「データを管理しているシステム」からメタデータを取り込みます
  • 「データを管理しているシステム」を変更しても、変更後のメタデータをマージできます
  • 全てのメタデータを一元管理するので、全てのメタデータを対象とした検索が可能です

Mashu は、30メタデータ(テーブル)までは、クレジットカード登録不要(無料)で評価することができます。

Mashu サーバーとは

Mashu は、クラウドネイティブな SaaS なので、Datalake などインターネット経由でアクセス可能な「データを管理しているシステム」との連携は可能ですが、オンプレミスのプライベートなネットワークに置かれた RDBMS との連携を直接は行うことができません。

Mashu では、このようなオンプレミスのプライベートなネットワークで動作する Docker ベースのアプリケーションを Docker Hub で配布しており、このアプリケーションを使用することでオンプレミスのメタデータを含めた全てのメタデータの一元管理を実現しています。

Mashu サーバーとは、この Docker Hub で配布しているアプリケーションで、Mashu サーバー自体の使用に対する費用は発生しません。(Mashu サーバー経由で Mashu に取り込まれたメタデータについては他の Mashu が管理するメタデータと同様に費用が発生します)

評価環境

PC

  • CPU:Intel Pentium 4415Y @ 1.60GHz
  • Mem:8.0 GB
  • SSD:128 GB

OS

  • Windows 10 Pro 22H2

RDBMS

  • Oracle Database 21c Express Edition for Windows x64

今回の評価に使用できて、今回の評価を実施する PC から接続可能な Oracle サーバがあれば、ローカル PC に Oracle を導入する必要はありません。

もしも、Azure AD 管理の Microsoft アカウントを使用していて Oracle XE の導入でエラーになった場合には、以下の記事も参照ください。
https://zenn.dev/robon/articles/02c34c82645f6b

Oracle 以外のデータベースで評価頂く場合は、適宜読み替えて頂ければと思います。

評価の準備

Oracle にユーザーとテーブルを用意する

既存の Oracle サーバへ接続できる場合は、このステップは不要です。

C:\> sqlplus sys/■■■ as sysdba
SQL> alter session set container = XEPDB1;

セッションが変更されました。

SQL> show con_name

CON_NAME
------------------------------
XEPDB1

SQL> create user ●●● identified by "▲▲▲" default tablespace users temporary tablespace temp;

ユーザーが作成されました。

SQL> grant connect, resource, unlimited tablespace to ●●●;

権限付与が成功しました。

SQL> exit

C:\> sqlplus ●●●/▲▲▲@//localhost:1521/xepdb1
SQL>@foo.sql
foo.sql
CREATE TABLE CUSTOMER (
    CUSTOMER_ID int,
    NAME nvarchar2(16),
    ADDRESS nvarchar2(128),
    CONSTRAINT PK_CUSTOMER PRIMARY KEY(CUSTOMER_ID)
);

COMMENT ON TABLE CUSTOMER IS '顧客マスタ';
COMMENT ON COLUMN CUSTOMER.CUSTOMER_ID IS '顧客ID';
COMMENT ON COLUMN CUSTOMER.NAME IS '氏名';
COMMENT ON COLUMN CUSTOMER.ADDRESS IS '住所';

CREATE TABLE ORDER_HEADER (
    ORDER_ID int,
    CUSTOMER_ID int,
    ORDER_DATE date,
    CONSTRAINT PK_ORDER_HEADER PRIMARY KEY(ORDER_ID)
);

COMMENT ON TABLE ORDER_HEADER IS '注文';
COMMENT ON COLUMN ORDER_HEADER.ORDER_ID IS '受注ID';
COMMENT ON COLUMN ORDER_HEADER.CUSTOMER_ID IS '顧客ID';
COMMENT ON COLUMN ORDER_HEADER.ORDER_DATE IS '受注日';

CREATE TABLE ORDER_DETAIL (
    ORDER_ID int,
    ROW_NUM int,
    PRODUCT_ID int,
    QUANTITY int,
    PRICE_PER_UNIT int,
    CONSTRAINT PK_ORDER_DETAIL PRIMARY KEY(ORDER_ID, ROW_NUM)
);

COMMENT ON TABLE ORDER_DETAIL IS '注文明細';
COMMENT ON COLUMN ORDER_DETAIL.ORDER_ID IS '受注ID';
COMMENT ON COLUMN ORDER_DETAIL.ROW_NUM IS '行番号';
COMMENT ON COLUMN ORDER_DETAIL.PRODUCT_ID IS '製品ID';
COMMENT ON COLUMN ORDER_DETAIL.QUANTITY IS '数量';
COMMENT ON COLUMN ORDER_DETAIL.PRICE_PER_UNIT IS '販売単価';

CREATE TABLE PRODUCT (
    PRODUCT_ID int,
    NAME nvarchar2(64),
    PRICE_PER_UNIT int,
    CONSTRAINT PK_PRODUCT PRIMARY KEY(PRODUCT_ID)
);

COMMENT ON TABLE PRODUCT IS '製品マスタ';
COMMENT ON COLUMN PRODUCT.PRODUCT_ID IS '製品ID';
COMMENT ON COLUMN PRODUCT.NAME IS '製品名';
COMMENT ON COLUMN PRODUCT.PRICE_PER_UNIT IS '標準単価';

Docker Desktop をインストールする

以下に説明がありますが、順に説明します。

https://docs.docker.jp/docker-for-windows/install.html

WSL2 を有効にする

コマンドプロンプトを「管理者として実行」します。

C:\WINDOWS\system32>wsl --install
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム  はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム  はインストールされました。
インストール中: Ubuntu
Ubuntu はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。

再起動します。

Ubuntu は既にインストールされています。
Ubuntu を起動しています...
Installing, this may take a few minutes...
仮想マシンまたはコンテナーからの応答が受信されなかったため、操作がタイムアウトしました。
Error code: Wsl/Service/CreateInstance/HCS_E_CONNECTION_TIMEOUT
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: ●●●
adduser: unrecognized option '--quiet'

ここで怒り出しますが、スルーしてください。何行か出力されるエラーを省略しますが、待っていると、もう一度、ユーザーを作れそうな感じになるので、ユーザーを作成します。

Enter new UNIX username: ●●●
New password: ▲▲▲
Retype new password: ▲▲▲
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

    * Documentation:  https://help.ubuntu.com
    * Management:     https://landscape.canonical.com
    * Support:        https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/home/●●●/.hushlogin file.
●●●@■■■:~$ sudo apt update && sudo apt upgrade

最後にシステムを更新しておきます。

Docker Desktop をインストールする

このサイト の「Docker Desktop for Windows」のリンクからインストーラ(Docker Desktop Installer.exe)がダウンロードできます。インストーラを起動したら、「User WSL 2 Instead of Hyper-V」にチェックを入れてインストールします。

Mashu サーバー

イメージを pull します

Docker Hub から Mashu サーバーを持ってきます(プルします)。
再起動後などの場合は、Docker Desktop を一度起動しておきます。
Linux など Windows 以外の OS で評価頂く場合でも、docker コマンドは同じです。

c:\> docker pull roboninc/mashu
Using default tag: latest
latest: Pulling from roboninc/mashu
f56be85fc22e: Pull complete
07f9b5de219e: Pull complete
159795e526f5: Pull complete
987dad55bbcb: Pull complete
1a1063a89f44: Pull complete
967452810d7d: Pull complete
Digest: sha256:e4b89b6a487b42aacd846fbb84f6645598bd2fa55f13ee007f1faabe461c3093
Status: Downloaded newer image for roboninc/mashu:latest
docker.io/roboninc/mashu:latest

What's Next?
  View summary of image vulnerabilities and recommendations → docker scout quickview roboninc/mashu

コンテナを起動します

既に 80 番、3000 番ポートを使用している場合は、別のポートを指定して起動してください。

C:\>docker container run --name mashu -p 80:80 -p 3000:3000 roboninc/mashu
2023/07/04 02:33:55 api router listen on port[3000]
2023/07/04 02:33:55 static router listen on port[80]

2回目以降は、以下のように起動できます。

C:\>docker container start mashu
mashu

コンテナに接続します

ブラウザで localhost へ接続します。
起動時に 80 番ポートを変更した場合は、変更したポート番号を指定して接続します。

以降は、Mashu にメタデータを同期する に続きます。

コンテナを停止します

C:\>docker container stop mashu
mashu

評価が終わったら、コンテナとイメージを削除しておきましょう

C:\>docker rm mashu
mashu

C:\>docker images
REPOSITORY       TAG       IMAGE ID       CREATED       SIZE
roboninc/mashu   latest    c9136c33a071   7 weeks ago   46.4MB

C:\>docker rmi c9136c33a071
Untagged: roboninc/mashu:latest
Untagged: roboninc/mashu@sha256:e4b89b6a487b42aacd846fbb84f6645598bd2fa55f13ee007f1faabe461c3093
Deleted: sha256:c9136c33a071ff4a8da1b19b27a83afdf1f27493385a159c827f1eb54218d305
Deleted: sha256:d62aef6273b3d42c483695f84aa2fad0fb284c45936df20a529d566aac9394b8
Deleted: sha256:767d7bb11dce8742dfe4a543cd2d75017c436fdf1cdf6ee918a9d349d5e5d44b
Deleted: sha256:c029e7e660f4effdfd62b5665069695fceeeb0c2aa583dc80c51a749acd174c5
Deleted: sha256:aeb6f8092507e7407ac1550096ab921f1f20c376e066d40d2184ee761bca6347
Deleted: sha256:1d4395380b55f989d4f0ebab743637861f7c9978dd1c31bf2476ac6311e25402
Deleted: sha256:f1417ff83b319fbdae6dd9cd6d8c9c88002dcd75ecf6ec201c8c6894681cf2b5

Mashu にメタデータを同期する

ユーザーを登録します

ブラウザで localhost へ接続して コンテナに接続します の画面を表示します。
ブラウザのアドレスバーは、localhost になっていますが、localhost を経由して、クラウド上の Mashu と通信をしていますので、ユーザーを登録すると、クラウド上の Mashu にユーザーを登録したことになります。

初回は、アカウント作成 からユーザー登録を行います。

上から ユーザー名(識別子)、メールアドレス、パスワード を入力して アカウント作成ボタンを押すと、入力したメールアドレスに確認コードが送られますので、以下の アカウントの確認画面で コード欄に入力して アカウントの確認ボタンで登録します。

最初の サインイン画面に戻るので、上の段には、ユーザー名メールアドレスで指定した文字列を、下の段にはパスワードで指定した文字列を入力して、Mashu にサインインします。

この画面で言語やタイムゾーンの設定ができます。また、この画面の設定は後から変更可能です。

組織を作成します

組織は、Mashu が管理するメタデータのオーナーです。管理しているメタデータに対する請求は組織の決済管理者に対して行われます。

組織には複数のユーザーが所属できます。組織の管理するメタデータは、組織に所属するユーザーだけが操作できます。ユーザーは複数の組織に所属することができます。

Mashu では、サインイン時に、必ず、どの組織のユーザーとして作業をするかを選択します。組織を選択する画面では、すでに参加済みの組織、招待された場合など参加できる組織が表示されますが、初回は、組織を作成するボタンを押して組織を作成します。

組織の情報は、請求書にも記載されますので正しく入力してください。この画面の設定もあとから変更可能です。組織を作成するとその組織の管理者で決済管理者になります。Mashu を使用する組織が選択可能になりましたので、作成した組織を選択します。

プロジェクトを作成します

プロジェクトは、組織内のメタデータをグルーピングする単位です。メタデータは、RDBMS や Datalake などデータを管理するシステム毎に取り込み、同期を行いますが、この単位を Mashu ではデータソースと呼びます。言い換えると、プロジェクトはデータソース単位でメタデータをグルーピングすることになります。

新しいプロジェクト ボタンを押します。

プロジェクト名 などの項目を入力して 作成する ボタンを押します。

Oracle をデータソースとしてメタデータを抽出します

上のプロジェクトの データソース タブで 新しいデータソース ボタンを押して、新しいデータソース作成するタイプ欄は、接続するシステムの種別を設定しますので、今回は、OracleDBを選びます。

とデータソース画面になりますので、ここで 接続設定 タブを選びます。

ここで Hostname は、Oracle サーバの Hostname になりますが、この Hostname に「Mashu サーバー」が接続するため、localhost は使用せず、ローカルPC に接続できる Hostname か IP アドレスにしてください。Port は、デフォルトでは 1521 番ですが、変更している場合はその番号を設定してください。

Username、Password は、今回は、この記事内でテーブルを作ったオーナーのものを使用しますが、メタデータ管理対象のテーブルのみに読み込み権限を付与したユーザーを用意するとよりセキュアになります。ServiceName は、この記事の場合、xepdb1 になります。

保存したときに、パラメータの下にスキーマ選択カードが表示されます。ここで、Mashuサーバー設定ができていない場合は、以下のような状態になります。

設定画面へリンクをクリックして、ユーザー設定画面のMashuサーバー設定を行います。ブラウザからMashuサーバーへのWebAPI接続の設定になりますので、今回の場合は、http://localhost:3000のように入力して保存するボタンを押します。

戻るリンクで、データソース画面に戻って、接続設定タブのスキーマ選択カードで、目的のテーブルが格納されているスキーマを選択します。

メタデータ タブに戻って、メタデータ同期 ボタンを押すと、同期中になります。

この記事の非力な PC の場合は 10 秒後に メタデータ同期 の右側のリロードボタンを押しました。

この記事の SQL で作成したテーブルが一覧表示されます。テーブルの情報を見るには、テーブルのカードをクリックします。

カラムの情報を見るには、カラム タブへ移動します。

さいごに

Mashu には、この記事ではご紹介できなかった機能がまだまだあります。
まずは、この記事のように Mashu にメタデータを取り込んで、評価してみてください。

データがバラバラであっても、『欲しいデータを』『欲しい時に』『欲しい場所で』見つけることができる Data Fabric の第一歩を Mashu からはじめてみませんか。

データレイクのデータカタログに連携しての評価をご希望の方は、こちらの YouTube 動画が参考になるかと思います。
https://youtu.be/4SHnif1_hqQ

GitHubで編集を提案
株式会社ROBONの技術ブログ

Discussion