Cache というマイナーデータベースについて
業務で使う機会があったので 覚書を作成します にわかです
注意:ここでは独学で実行環境から構築とかそういうのはないです。
あくまで仕事先で必要があって環境は用意されているけど、よくわからんなという人向け
Cacheの概要 前提知識等
Cacheはリレーショナルデータベースとかいう表形式ではないデータベースのようなもので
データベースを操作する言語をM言語という
といってもSQLというかC言語みたいにプログラミング言語的なことも出来るので最初は割と???となるかもしれないが諦めず頑張ってほしい。
昔は病院で使われてたとかいろいろあるらしいが、それを知っても
知識対効果(実用性)があんま高くないと思うのでその辺は省く
リレーショナルデータベースといつものやつの違い
いつものSQL
カラム名があって大体プライマリーキー(大体ID)に紐づいてデータがある
誰のなんのデータを指定したいという場合
select カラム名 from テーブル名 where EmpId=指定したいID
みたいな感じだ
例として従業員番号123の名前を指定するなら
select EmpId from EmployeeTb where EmpId =123
となる。
一方Cacheの場合
select文があるのかもしれないが基本使わない
誰のなんのデータを指定したいとかのよくある例としては
$P(^グローバル名(指定したいID),区切り文字,ある場所の番号)が多い
また管理の仕方としては
^EmployeeTb(123)="田中"?100
^EmployeeTb(124)="高橋"?101
ガチでこういう管理をする
例として従業員番号123の名前をWrite(C言語とかのprint)をするなら
W $P(^EmployeeTb(123),"?",1)
となる。
グローバル(消さない限りデータベース内に残る変数)があり、今回はEmployeeTbという変数がデータベース内に残るグローバルだ。
グローバルはテーブル名
プライマリーキーが添え字と呼ばれるやつにあたる EmployeeTb(添え字)
EmployeeTb(添え字,添え字2,添え字…)と添え字を増やすことも出来る
ただ一つのレコードはすべて一つのグローバルに入れることが多い
例えばカラムに合わせて
^EmployeeTb(123,Name)=田中
^EmployeeTb(123,DeptCode)=100
とすることも出来るが
基本やらない
^EmployeeTb(123)="田中"?100
のようにカラムごとに分けず、大体?等の区切り文字の何番目かで何が入っているか判断することが多い
その為グローバルの仕様書とかでは何番目に何が入っているかの表がとても大事
.macファイルの文化
macファイルというM言語を書くファイルがある。
実はswitch文とかが存在しているのだがあまり出番がない
というのもラベルというなかなかない仕組みがあるからだ
if 条件 D L100
if 条件 D L 200
if 条件 D L300
D L400
みたいな感じだ
L400とか書いてるのがラベルと呼ばれるやつでいわゆる関数みたいなものくらいに覚えておいた方がいいと思う
こんな感じで読み飛ばす文化がある
実行について
主に三種類ある
teratermだけで動かすパターン
teratermからmacファイルを実行するパターン
htmlとM言語を組み合わせてWEBページ上でなんかうごくいつものやつ
最初はteratermだけで実行し
次にmacファイルをteratermで実行し
最後にhtmlとjsとM言語を組み合わせてWEBページ上で動くようにする
大体そんな感じでステップアップすると良い感じです
なおmacファイルとはM言語を書くファイルです。
サーバーとネームスペースとは?
サーバーの中にネームスペースがあってネームスペースの中に実行ファイル類(CSSとかjsとかCSPとかmacファイルとか)がある
私たちはサーバーにネームスペースを指定されてここで開発してねと言われるのでなんか作業する場所なんだなと思って下さい。
サーバーの中にネームスペースがいっぱいあって
サーバーは本番環境と開発環境があることが多い
サーバーも複数あることもある
サーバーとネームスペースの違いについて聞かれるととても困るのというか何とも言えないがとりあえずディレクトリの何かだと思っておけば良い
違うネームスペースのグローバルを見に行くことは可能だが
違うサーバーのグローバルを見に行くことはまずない そんな感じの何かだ