【M言語】キャシエ・CACHE【MUMPS】

レス数: 276

概要: 漏れはCacheに触ったことはないんだが、ちょっと教えて。 CacheはM言語でアクセスすることがやっぱり前提にあるんかな? SQLでもアクセスできるみたいだけど、それだとRDBMSとの差別化がわからん。 「表」...
No.101
漏れはCacheに触ったことはないんだが、ちょっと教えて。
CacheはM言語でアクセスすることがやっぱり前提にあるんかな?
SQLでもアクセスできるみたいだけど、それだとRDBMSとの差別化がわからん。
「表」っていう概念は人間にとってわかりやすいからね。
言語まずありき、では普及するのは厳しい気がする。
No.102
>>100

じゃあ
>>89
の言ってるindexingについて議論してみろ
お前スレの最初から素晴らしいですとか画期的ですとか印象しか書いてないだろ
No.103
まあこれまでのやりとりを見ていて俺が思うに、多次元連想配列によるデータストアは
RDBと比較して自由度が高いとか柔軟だという以前に 単にプリミティブなんだな。
だからスキーマとか索引とか、システム側が提供してくれない分、プログラマが工夫して
やりくりしなきゃならない。
提供する機能が最低限だから、ディスクの使用効率も高いように見えるが
ちゃんとパフォーマンスを考えて索引つけたり更新したり
という処理を付加していくと、その分データ構造が冗長になって、
結局はそれほど効率は高くないんじゃないかという印象を受ける。
また提供している概念がプリミティブだから、理解するのが容易とも言われているが、
実用的なモノを作れるようになるためには、上記のような何をどのように格納すべきなのか、
というノウハウまで習得しなければならない。そしてそのノウハウは個人個人の財産でしかなく
広く共有化されるところまでいっていない。MUMPSというシステムは長い歴史を誇っているらしいが、
そういう意味では非常にもったいないというか、ユーザーグループは今まで何をしてたんだ、
と問いただすべきだろう。
あとシステムに抱き合わせで用意されている言語が前時代的だから、メタデータを基にした
定型処理のジェネレーティングみたいな手法も使えない。
例えば
「メタデータを元に構造化データをストアするルーチンを自動生成する」だとか
「データをストアすると同時に索引も更新するルーチンを自動生成する」
みたいなやつね。
DBMSの本質がどうとか言ってる人、こういう議論はどうかな。
No.104
(1) ^A(X0, X1, X2, ..., Xn) = Y

(2) ^A(X0, X1, X2, ..., Xn, Y)
の違いがわかりません。
(1)は何か方向性を持つのでしょうか?
No.105
同じだっけ?
No.106
>>104

どういう場合に(1)と(2)を使い分けるのかを聞きたいのじゃないか?
No.107
実装の問題? よくわからん
No.108
4D使ったらいいのに
No.109
昔のMUMPSで作った「.rtn」のファイルをどーやっってインポートすればいいのかわからん。
ISJの人に聞いたら教えてくれるかな?
No.110
age
No.111
>>109

"オプション"を選んで入力形式を選べばDSM、DTM、MSMとかあるので、
適切なものを選べば大抵はそのままインポートできます。
SP-MUMPSはどれを選べばいいか知りません。
No.112
>>111

どーもありがとうございます。
SP-MUMPSなのでやはりそのままではうまくいかず、ISJのサポートに電話しました。
TEXTに書き出したものをCACHE用に手を加え、スタジオに張りつけビルドすると良いそうなので
ぼちぼちやってみます。
No.113
現在のフリーダウンロード版のキャシエって
Visual Studio .NET 用の C#かVB用のソースコードの吐き出しかそれに代わる機能ってありますか?
Visual Studio でいろいろいじくってみたいんだけど、
ホームページみてもいまいちよくわからなかったの
もしできるんなら、またユーザー登録してダウンロードしてみようかなぁっておもったんだけど
しってる人おしえて
No.114
age
No.115
113>>
CD付きの本かいました。
No.116
過疎ってる…
仕事でCACHEを使うことになってのですが、
なぜかMUMPSではなくSQLベースのRDB的な使い方をすることになりました。
理由はMUMPSを使える技術者が少なく、外注などを探しても
なかなかみつからないからだそうです。
そうなるとCACHEを使う利点がわかりません。
偉い人たちが何を考えているのかわかりません。
No.117
手垢の思い
No.118
ODBC接続でMUMPSって使えるの?
No.119
MUMPSを使うというかMUMPSで作ったプロシージャを
ODBCから呼び出すんだよ。
ODBCとADOはMUMPSで作ったプロシージャ
を呼び出せた。
実行時引数も渡せた。
実行結果も取れるよ。
No.120
なんか初歩的なミスをしてしまった。orz
No.121
MUMPSはちょいと勉強すれば直ぐに理解できると思うんだが。
No.122
ところがどっこい、それを理解できない(したくない?)SE気取りの
オサーン達がMUMPSじゃ駄目だ的なことを言うのよ。
で、シャッチョサン達はオサーン達の言い訳を
真に受けちゃったらしくてね…
で、
>>116
に戻ると。
つうか、CACHEでSQLって速いのか?
No.123
チューニングをしていないOracleよりは速いとか。
逆に言えば、チューニングしたOracleよりは遅いということ?
No.124
2ヶ月もレスが無い
かくいう私も話題は無いが
いや、聞いてみたいことはあるんだが、職場で特定されそうで聞けないw
No.125
気にせずに聞いちゃえば…って、すでに半年くらい経過してるのか。
No.126
こんなスレあったんだなw
とりあえず簡単に書けるとこだけ。
もう2年近くも前だが…w
>>81

確かに「当然」ではないだろうけど、「理不尽な仕様」でもない。
もともとインタプリタでもあるMumpsでは、
文法上タブコードの後には命令しか書けない。
つまり、「.」も前の行のネストを継承するという命令の一種。
命令すっ飛ばしたんだから、ネストは継承されない。
それとコメントするのに気を使わなきゃならないってのも、
C言語では/* */のコメントが入れ子に出来なかったので気を使ってたが…
>>101

>「表」っていう概念は人間にとってわかりやすいからね。
もちろん使用するデータの種類にもよるけど、
これはRDBが主流になり始めてから出てきた神話だったりもする。
生物の分類を考えたときに、表で考えるやつはまずいない。
大抵は樹形図になるはず。
RDB以前のデータベース設計の本なんかを読めばわかるけど、
分類データはまず樹形図になるので、
これをまず表に変換しなさい、ってな話が出てきたりもする。
Excelなんかで表を書くときでも、
同じ項目が繰り返される部分のセルを連結したりした時点で、
それはRDB的概念の表ではなくなる。
>>123

扱うデータの種類と設計によるとしか言えんわな。
Oracleのチューニングが何を指すかにもよるか。
結局トータルコストで判断するってアヤシゲな話にしかならなかったり…
No.127
>>116

オラクルとかと比べて安いの?
No.128
M言語使いは需要あります?
必ずしも日本に限らず。
c、Javaを今から始めたって、
ホントに使える人はさておき、
人数多いから、ニッチなのをと考えています。
あと、M言語開発者に聞きたいのですが、
作ったシステムのデザイン(見た目)は
いくらでも見栄えよくできますでしょうか?
いかにも一昔前の灰色背景の味気ない
ものしかできないのでしょうか?
DBスレで申し訳ありませんが、
お願いします。
No.129
>>128

M言語=Cacheスクリプトで考えちゃうけど、
CacheスクリプトはDBのスクリプトなので
ストアドプロシージャみたいな感じでしか使わない。
なので、目に見える部分はVBなどで作ることになるので、
見栄えはいくらでも良くできます。
需要はわかりません・・・
No.130
>>129

ありがとうございます。
良いものが必ずしもデファクトスタンダードに
ならないですからね。
cacheが良いものってわけでもないけど。
対極にあるのが圧倒的だから、どうなるのかな。
No.131
Q1.cacheに関わって何年?
Q2.DBの下地(他DBでの開発、学校等でさらりと)の有無
Q3.これからも扱っていく?
お答えいただければ、これ幸い。
No.132
グローバルのエキスポートをCache形式で行ってしまったデータを
インポートするとDBがぶっ壊れるのは仕様?
Cache Block形式なら大丈夫なんだけど。
No.133
>>132

Cache形式でエクスポートした場合は、
Cache形式でインポートすれば大丈夫だが・・・
とはいっても、いつもは^%GOGEN と ^%GIGEN でインポートエクスポートしているけど。
No.134
おぉ、レスが付いてる。
>>133

それがCache形式でインポートしてもダメなんだよね。
インデックス付きのグローバルを*Dと*Iのセットでエクスポート&インポート
してるんだが、インポートした後ではユニークキー指定してあるプロパティの
値が10数個単位で重複するという状態になっちゃう。
エクスポートしたのと同じマシンでインポートしてるからエンディアンとか
文字コードとかの問題じゃないはずなのに。
No.135
>>134

そのような現象は経験したことがないな。
大抵は文字コードか、形式を間違ってインポートしたときにおかしくインポートされる。
他の原因を強いて考えるなら、データ内に変な文字コードが入っていて
それが悪さしている場合だけど、現象からするとそうでもなさそう。
インターシステムズ社に問いあわせるしかないと思う。
No.136
そんなに高性能なら、なんで基幹とかで普及してないの?
実績が分かりにくい上に情報も少ないし、修得するのが実は非常に困難なのでは?
いくら歯の浮いた宣伝文句見せられても、キャシェと今更心中するわけにはいかないし、日本法人信用出来ないし、多分廃れるな。
No.137
もともと医療業界で発達したDBだからじゃん? 顧客チャネルが弱い
海外だとぼちぼち金融系にも入ってってるみたいだけどね
ODBが速度速くて開発がラクって事はみんなわかってる
でも既存開発資産との兼ね合いとかISの事業継続性リスクとか見ると
移行コスト/リスクを正当化する稟議が降りないってことでしょ
SEも枯れてるDB運用じゃない新しい技術を習得する・
させることに二の足踏むだろうし
あとサポートの問題もあるんだろうな
No.138
もともと、RDBはそれ以前からあった階層DBより性能は悪かったわけだが
RDBは瞬く間に普及し、階層DBは廃れていった。
性能ばかりが重要なファクターじゃないってことで。
No.139
Cacheが速いのって、B+Treeでインデックス張ったキーだけじゃないの?
SQLアクセスって、BtrieveにSQL被せたPervasiveSQLを思い出すんだけど。
触ってみたけど、Object Scriptわけわかんね。%Library.Dateとか日付型に現在時刻
入れようとしたんだけど、ドキュメント検索して見つかった$hってはいらねー。他に現在時刻みつかんねー。
他の言語とかDBなら分かったはずの「格納時の内部表現」って奴がCacheだと全然わからん。
日付や時刻って、どうやって格納されるの?まさか文字列で"2007/09/20"って保存??
$hそのまんま代入できるプロパティ型ってある?みつかんないんだけど。無いなら、$hって何のためにあるの??
型同士の代入互換性が全然わかんねー!こんなの入門書の一番はじめに書いてそうなもんだけど、
見つからないのは探し方が悪いのか?MUMPSの常識は知ってて当たり前だから省略されてるのか?
教えて!エロい人!!!
No.140
多分だけど、文字列で"09/20/2007"なら入る。
現在時刻を入れたければ、$zd($h)で入れればいいかも。
No.141
>>140

どうも。
日付が保存される場合、その内部表現は何なんでしょう?
日付時刻の場合は?ミリ秒まである場合は違うんでしょうか?
$hで出てくる値が内部表現そのものかな?と思っても、%Date型に$hは入らないで文字は入る。
その辺が、頭で「こうできるだろう」というイメージと違ってて気持ち悪い。
No.142
自分も勉強中ではっきりとは言えないけど、
Cache'って内部表現は、全部文字列だよ。
だからCache'(M言語上)で使用するときは、文字列として扱う。
型を意識するのってJavaとか.netから使うとき位じゃない?
No.143
調べて分かったこと。
%Date, %Timeの内部表現は$holorogと同じみたいです。ただし%Dateは$hの前半分、%Timeは$hの後ろ半分
の数字が格納されます。
管理ポータルの論理モードの値は、%Date型の場合$hの日付部分と同じ値でしたので間違いないです。
一連の勘違いの原因も判明。
・%TimeStampの内部表現が$hと違うこと(クラスリファレンスによるとYYYY-MM-DD HH:MM:SS.nnnnnnnnnn という文字列)
・何を代入しても、%Save()しないとプロパティの検証が動かない事
が原因で、%Dateも%Timeも$hじゃない、とか26/09/2007でも2007-09-26でも何でも代入できる、とか勘違いしました。
No.144
クラスを使わないオレには何を話しているか分からんw
No.145
クラスを理解出来なくても。。。と言うよりクラスを知らなくても
十分業務アプリを作成出来てしまうから覚えようとする気持ちになれないなぁ(^^;
初めてcacheをさわる人に、cacheのマニュアルは突起にくいと思います。
分かる人が見てわかるようなマニュアルでは意味が無いのでは。。。
No.146
でも、SQL使うならクラスは必要では?
たしか手作業で既存のグローバル変数とSQLのフィールドをバインディングできたと思うけど、
それ使ってるの?
自動でIndex更新するのも、システム管理ポータルでテーブルチューニングできるのも、
全部クラスつかってスキーマ定義するのが前提では?
十分業務アプリを作れる、という人は、GUIに何を使って、言語バインディングとかは
どうしてるの?サーバーサイドはクラスやメソッドじゃなくて全部ルーチンって事?
5.xからcacheに触れた人と、MUMPSから知ってる人ではずいぶんと前提が違う気がする。
>初めてcacheをさわる人に、cacheのマニュアルは突起にくいと思います。
激しく同意。緑本も読みづらい上に、肝心なことがどこに書いてあるのかわからない。
No.150
>>146

GUIはVB.NET、接続はActiveX。
で、ルーチン呼び出してデータを操作って感じ。
学生時代(10数年前)からMUMPSをやってたんで、
今でもこのスタイルで開発。