【M言語】キャシエ・CACHE【MUMPS】
医療、金融、物流、製造でいまだに活躍! 古参も新参者も、さー語ってくらっしゃい。 MUMPSを使うというかMUMPSで作ったプロシージャを ODBCから呼び出すんだよ。 ODBCとADOはMUMPSで作ったプロシージャ を呼び出せた。 実行時引数も渡せた。 実行結果も取れるよ。 MUMPSはちょいと勉強すれば直ぐに理解できると思うんだが。 ところがどっこい、それを理解できない(したくない?)SE気取りの オサーン達がMUMPSじゃ駄目だ的なことを言うのよ。 で、シャッチョサン達はオサーン達の言い訳を 真に受けちゃったらしくてね… で、>>116 に戻ると。 つうか、CACHEでSQLって速いのか? チューニングをしていないOracleよりは速いとか。 逆に言えば、チューニングしたOracleよりは遅いということ? 2ヶ月もレスが無い かくいう私も話題は無いが いや、聞いてみたいことはあるんだが、職場で特定されそうで聞けないw 気にせずに聞いちゃえば…って、すでに半年くらい経過してるのか。 こんなスレあったんだなw とりあえず簡単に書けるとこだけ。 もう2年近くも前だが…w >>81 確かに「当然」ではないだろうけど、「理不尽な仕様」でもない。 もともとインタプリタでもあるMumpsでは、 文法上タブコードの後には命令しか書けない。 つまり、「.」も前の行のネストを継承するという命令の一種。 命令すっ飛ばしたんだから、ネストは継承されない。 それとコメントするのに気を使わなきゃならないってのも、 C言語では/* */のコメントが入れ子に出来なかったので気を使ってたが… >>101 >「表」っていう概念は人間にとってわかりやすいからね。 もちろん使用するデータの種類にもよるけど、 これはRDBが主流になり始めてから出てきた神話だったりもする。 生物の分類を考えたときに、表で考えるやつはまずいない。 大抵は樹形図になるはず。 RDB以前のデータベース設計の本なんかを読めばわかるけど、 分類データはまず樹形図になるので、 これをまず表に変換しなさい、ってな話が出てきたりもする。 Excelなんかで表を書くときでも、 同じ項目が繰り返される部分のセルを連結したりした時点で、 それはRDB的概念の表ではなくなる。 >>123 扱うデータの種類と設計によるとしか言えんわな。 Oracleのチューニングが何を指すかにもよるか。 結局トータルコストで判断するってアヤシゲな話にしかならなかったり… M言語使いは需要あります? 必ずしも日本に限らず。 c、Javaを今から始めたって、 ホントに使える人はさておき、 人数多いから、ニッチなのをと考えています。 あと、M言語開発者に聞きたいのですが、 作ったシステムのデザイン(見た目)は いくらでも見栄えよくできますでしょうか? いかにも一昔前の灰色背景の味気ない ものしかできないのでしょうか? DBスレで申し訳ありませんが、 お願いします。 >>128 M言語=Cacheスクリプトで考えちゃうけど、 CacheスクリプトはDBのスクリプトなので ストアドプロシージャみたいな感じでしか使わない。 なので、目に見える部分はVBなどで作ることになるので、 見栄えはいくらでも良くできます。 需要はわかりません・・・ >>129 ありがとうございます。 良いものが必ずしもデファクトスタンダードに ならないですからね。 cacheが良いものってわけでもないけど。 対極にあるのが圧倒的だから、どうなるのかな。 Q1.cacheに関わって何年? Q2.DBの下地(他DBでの開発、学校等でさらりと)の有無 Q3.これからも扱っていく? お答えいただければ、これ幸い。 グローバルのエキスポートをCache形式で行ってしまったデータを インポートするとDBがぶっ壊れるのは仕様? Cache Block形式なら大丈夫なんだけど。 >>132 Cache形式でエクスポートした場合は、 Cache形式でインポートすれば大丈夫だが・・・ とはいっても、いつもは^%GOGEN と ^%GIGEN でインポートエクスポートしているけど。 おぉ、レスが付いてる。 >>133 それがCache形式でインポートしてもダメなんだよね。 インデックス付きのグローバルを*Dと*Iのセットでエクスポート&インポート してるんだが、インポートした後ではユニークキー指定してあるプロパティの 値が10数個単位で重複するという状態になっちゃう。 エクスポートしたのと同じマシンでインポートしてるからエンディアンとか 文字コードとかの問題じゃないはずなのに。 >>134 そのような現象は経験したことがないな。 大抵は文字コードか、形式を間違ってインポートしたときにおかしくインポートされる。 他の原因を強いて考えるなら、データ内に変な文字コードが入っていて それが悪さしている場合だけど、現象からするとそうでもなさそう。 インターシステムズ社に問いあわせるしかないと思う。 そんなに高性能なら、なんで基幹とかで普及してないの? 実績が分かりにくい上に情報も少ないし、修得するのが実は非常に困難なのでは? いくら歯の浮いた宣伝文句見せられても、キャシェと今更心中するわけにはいかないし、日本法人信用出来ないし、多分廃れるな。 もともと医療業界で発達したDBだからじゃん? 顧客チャネルが弱い 海外だとぼちぼち金融系にも入ってってるみたいだけどね ODBが速度速くて開発がラクって事はみんなわかってる でも既存開発資産との兼ね合いとかISの事業継続性リスクとか見ると 移行コスト/リスクを正当化する稟議が降りないってことでしょ SEも枯れてるDB運用じゃない新しい技術を習得する・ させることに二の足踏むだろうし あとサポートの問題もあるんだろうな もともと、RDBはそれ以前からあった階層DBより性能は悪かったわけだが RDBは瞬く間に普及し、階層DBは廃れていった。 性能ばかりが重要なファクターじゃないってことで。 Cacheが速いのって、B+Treeでインデックス張ったキーだけじゃないの? SQLアクセスって、BtrieveにSQL被せたPervasiveSQLを思い出すんだけど。 触ってみたけど、Object Scriptわけわかんね。%Library.Dateとか日付型に現在時刻 入れようとしたんだけど、ドキュメント検索して見つかった$hってはいらねー。他に現在時刻みつかんねー。 他の言語とかDBなら分かったはずの「格納時の内部表現」って奴がCacheだと全然わからん。 日付や時刻って、どうやって格納されるの?まさか文字列で"2007/09/20"って保存?? $hそのまんま代入できるプロパティ型ってある?みつかんないんだけど。無いなら、$hって何のためにあるの?? 型同士の代入互換性が全然わかんねー!こんなの入門書の一番はじめに書いてそうなもんだけど、 見つからないのは探し方が悪いのか?MUMPSの常識は知ってて当たり前だから省略されてるのか? 教えて!エロい人!!! 多分だけど、文字列で"09/20/2007"なら入る。 現在時刻を入れたければ、$zd($h)で入れればいいかも。 >>140 どうも。 日付が保存される場合、その内部表現は何なんでしょう? 日付時刻の場合は?ミリ秒まである場合は違うんでしょうか? $hで出てくる値が内部表現そのものかな?と思っても、%Date型に$hは入らないで文字は入る。 その辺が、頭で「こうできるだろう」というイメージと違ってて気持ち悪い。 自分も勉強中ではっきりとは言えないけど、 Cache'って内部表現は、全部文字列だよ。 だからCache'(M言語上)で使用するときは、文字列として扱う。 型を意識するのってJavaとか.netから使うとき位じゃない? 調べて分かったこと。 %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でも何でも代入できる、とか勘違いしました。 クラスを使わないオレには何を話しているか分からんw クラスを理解出来なくても。。。と言うよりクラスを知らなくても 十分業務アプリを作成出来てしまうから覚えようとする気持ちになれないなぁ(^^; 初めてcacheをさわる人に、cacheのマニュアルは突起にくいと思います。 分かる人が見てわかるようなマニュアルでは意味が無いのでは。。。 でも、SQL使うならクラスは必要では? たしか手作業で既存のグローバル変数とSQLのフィールドをバインディングできたと思うけど、 それ使ってるの? 自動でIndex更新するのも、システム管理ポータルでテーブルチューニングできるのも、 全部クラスつかってスキーマ定義するのが前提では? 十分業務アプリを作れる、という人は、GUIに何を使って、言語バインディングとかは どうしてるの?サーバーサイドはクラスやメソッドじゃなくて全部ルーチンって事? 5.xからcacheに触れた人と、MUMPSから知ってる人ではずいぶんと前提が違う気がする。 >初めてcacheをさわる人に、cacheのマニュアルは突起にくいと思います。 激しく同意。緑本も読みづらい上に、肝心なことがどこに書いてあるのかわからない。 >>146 GUIはVB.NET、接続はActiveX。 で、ルーチン呼び出してデータを操作って感じ。 学生時代(10数年前)からMUMPSをやってたんで、 今でもこのスタイルで開発。 http://iqlveq.cn cheap mp3 downloads >>150 $Order使ってるからSQL使ってないのか。 Cache関連サイトって、SQLとかクラス使う方法載せてるところが無いよね。 MUMPS懐かしい 30年前に出会いました。 そのころは、DECのPDP11/40というマシンでプログラミングしていました。 PCはIBM5550のPC−DOSがスタンドアロンで普及しはじめた頃です。 会社にはメインフレームに接続した端末ばかりで、なかなか自由に使えなかった時代で、 コーディング用紙をキーパンチャーに渡しパンチをお願いしていました。 もちろん言語はCOBOLやFORTRAN、PL1でした。 MANPSに出会って、私は目が覚めました。 今までのプログラミングはなんだったんだろう。それぐらい感動しました。 クライアント/サーバで端末が10台くらいで、各端末はLANで接続されていました。 エディターもラインエディターでした。 MUMPSは本当に簡単で習得しやすい言語です。 勉強しながら住所録の入力・修正・削除・問い合わせの画面とプリント出力の プログラムを他の仕事もしながら1週間程度でプログラミングできました。 ファイル構造(データベース)もwindowsのツリー構造そのままですね。 レコードはフルパスのような感じですし。 MAMPSの良さはデータの形式やレコードの定義を考えずに記述できるし 後から自由にレコードの構造を変更でき、他のプログラムにもあまり影響を与えないのです。 本当に少ないステップでプログラミングできるので驚きでした。 MUMPSを調べていてここにたどり着きましたが、 CACHEとうい言語に生まれ変わっていると知り、本当に嬉しい。 私が今何ぜMUMPSに関心を持っているかと云いますと。 ライセンス料金です。 windows-OS・office・VB・2003SQLサーバ・CAL・oraclとライセンス料は非常に 頭の痛い問題です。 CACHEにするとサーバをLinuxにして端末をwindowsにしても CACHEとwindowsのライセンス料だけで済むとしたら、 安いのではないかと考えたのです。 openOfficeも在るし、kingOfficeも在るので。 それにwindowsとSQL・EXCEL・ACCESS・VBはバージョンアップの度に各端末の 環境(バージョン)が違うため不具合続出なのです。 windowsをこの際見切りを付けたいのです。 http://dokan-dev.net/about/ こいつを使ってcacheのネームスペースをWindowsのファイルシステム上にマウントできればいいんだけどなぁ。 さらにMercurialなんかを組み合わせて自動的にバージョン管理までするような仕組みもできそう。 誰か作ってみませんか(他力本願・・・) スタジオからソースを自動エクスポートして、svnで管理する方法ってない? svnってsource safeみたいなやつのことだよね? cacheにエクスポートするクラスメソッドが用意されてるから VBSとかで簡単なバッチ作ればできるんじゃね? プログラマじゃないんだが 仕事(医療保険者)で、これから導入するシステムがこれで組まれているんだそうだ 上読むと医療関係で実績があるらしいがレセプト処理なんかが得意ってことなのか 別に得意ってわけでもない。 覚えることが少ないからプログラマじゃなくても何とかなるってだけ。 将来的にカスタマイズする予定があるならMUMPSやめとけ。 技術者の確保ができないから開発会社が固定されちまう。 x86_64でGT.Mをビルドしようとしてるのだけど嵌ってます。 $ gmake -f sr_unix/comlist.mk -I./sr_unix -I./sr_linux buildtypes=dbg gtm_ver=`pwd` ~/gtm/gtmsrc_5.3.0001A ~/gtm/gtmsrc_5.3.0001A/dbg/obj ~/gtm/gtmsrc_5.3.0001A/dbg/obj gt_cc_option_I: Undefined variable. gmake: *** [xfer_build] Error 1 バイナリでインストールしたもの(32bit)を gtm_ver に指定すると gmake: *** No rule to make target `pro_all', needed by `all'. Stop. となります。 centos5.2 x86_64, gmake 3.81, tcsh, icu3.6 なので環境的には問題なさそうなのですが。。。 .tcshrcには32bitバイナリ配布物の gtmcshrc 等をコピペです。 setenv gtm_curpro /usr/local/gtm setenv OBJECT_MODE 64 set path = (/usr/local/bin $path) set path = ($path . ~/bin) setenv gtm_dist '/usr/local/gtm' setenv gtmgbldir 'mumps.gld' if ($?gtm_chset) then if (($gtm_chset == "UTF-8") && (-e $gtm_dist/utf8)) then setenv gtm_dist $gtm_dist/utf8 endif endif setenv gtmroutines ". $gtm_dist" alias gtm '$gtm_dist/mumps -direct' alias mupip '$gtm_dist/mupip' alias lke '$gtm_dist/lke' alias gde '$gtm_dist/mumps -r ^GDE' alias dse '$gtm_dist/dse' set path = ($path $gtm_dist) なにか解決の糸口が分かる方、アドバイスを。。。 >>162 レスありがとう ただ既に成果物は納入されているので 後は導入支援を得て導入という段階になってる 開発はデ○タ…何か身元が割れそうだw SQL環境下で動作テストをしていたものをcashe環境下で動作テストを行うのですが SQL文のズレが分かりません。 SQLのJOIN関数は使わなくてもいいっぽいらしいのですが、どう作れば良いんですかね。 casheの概念や資料なんぞ貰わえず、とり合えず修正してくれと渡されたのですが。 casheについて講習してるような所があればお教えして頂けると幸いです。 cache講習はInterSystemsがやってる。一日2万円。講習によって日数が変わる。 SQLはSQL-92の殆どが通じる。 Joinを使わなくて良いパターンは、Propertyが他クラスの場合、->構文で参照できる。 別にJoinを使っても結果は同じだから、だまって知ってるSQLを書けばいいよ。 まずは、システム管理ポータルからSQLを打ち込んでみたら? あと、ドキュメントをみれば一応SQL関連は難しくない。MUMPS初めての人間がcacheを理解するのに あのドキュメントは辛すぎるけど。 まず、Cache SQL入門のあたりを読んでみたらいい。 これが最初に勉強中のプログラム言語だけどInValidDT()の使い方わかんねえ てかいちいち従属で変数書いて検証しないとクラス定義に合致してるかわからないって面倒すぎないか これだと普通にスプリクトに処理投げてるのと変わらない気がする そのプロパティ設定したクラスでメソッド書いたら自動で適用されるものと思ってたのにプログラムってこんなものなのか InValidDTってなんだっけ?ドキュメントに引っかからないんだけど。 ちょっとした用途だとMySQLとかで十分だしな。でも大規模になるとEliteになって簡単に億超える罠。 みんなどれくらいの規模に使ってる?参考に教えて欲しい。 あんまり具体的だとInterSystemsにばれるかもしれないけど。 ごめんInじゃなくてIsだった IsValidDT 自分は1000人分弱、予想数百MB程度のデータを扱うつもり このソフトには役不足だろうけど階層型で完成度高くてフリーで手に入るのといったらこれが一番だし でも本にしてもネットにしても情報が少なくてほんと困る 暗中模索きつすぎ >>172 進捗はさすがに公開されてないんじゃ・・・ 目次見た。 サーバーサイドプログラミング講習+ZEN講習くらいの内容か cacheで作った物って他に転用効かないから、正直あまり使いたくないな 統合環境も使いにくいし古臭い オープン・ソース M(Mumps) GT.M ttp://www.fidelityinfoservices.com/FNFIS/Markets/NonfinancialIndustries/Healthcare/gtm/ ttp://sourceforge.net/projects/fis-gtm/ Mumps II ttp://www.cs.uni.edu/~okane/mumps.html その他 ttp://mumps.sourceforge.net/ >>180 ISJのページ見てもどんな製品だかよくわからん。 ensembleはほら、BizTalkとかWebSphere MQとかと一緒でEAIの一種じゃん。 BPELのサブセットもあるし。 アンサンブルやディープシーのグラフ(SVG)で日本語出せないのはなんとかならんのか。 Flashにすればいいのに。 なんともならんよ。 大体アドビがすでにIEのSVGプラグイン放棄してるから今後もう使える望みはない。 ISもいつまでマイクロソフトのせいにして逃げるつもりかね。 しまいにゃ基幹で狐使えとか言うし狂ってるとしか思えない。 大体アンサンブルだってマトモに使えるアダプタがODBCのみとはどういう事? 使えない機能満載にもかかわらずあのトンデモ価格での提供は、本気で日本で商売する気あるとはとても思えない。 狐って火狐?IEでしか動きませんって聞いた気が。別の狐の話かな。 1億するWebMethodsよりは安いけど、大して安くはないね>Ens ところでさ、>>174 の本にCacheSQLも載ってるんだけど、DDLについて一カ所だけ触れて「後で説明」って 書いてあるんだけど、説明が見つからないんだよね。 俺の見落としかな? cacheでDDL書く奴もあまりいないんだろうけど。 狐はやサファリなんかは標準でSVG対応してるからなあ。 しかし、ディープシーのインターフェースがIEしか対応していないのも事実。実際狐だとログインが出来ない。しかしグラフは日本語表示ができない。JIS2004フォント入れてなくてもダメ。 アンサンブルは狐だとプロダクション管理画面はまあまあ使えるが、そもそも管理ポータルの動きがかなり怪しい。 早い話が全ての機能がマトモに動く環境がほとんどないという素晴らしい製品という事。 SVG はさ、SVG で保存して、アドビのソフトでSVGで開いても、ちゃんと表示されない。 IEのSVGプラグインで表示どころか、イラレでSVG の画像部品作る事ができない。 SVG の部品作成ソフトが欲しいところ orz 死んだ規格にこだわっても何も良いことないのにねぇ。 そんなことよりキャシェの基本機能や性能をさらに上げた方がもっと効果的に他のDBより差別化できるのにね。 今のISの戦略は我々がキャシェに求めているものとはかなりかけはなれたモノだよ。 死んだ規格といっても、M言語を捨てたらそもそも存在価値がなくなるんじゃ? SVGの事じゃね<死んだ規格 CSPとかZENは見直して欲しいかなぁ。セッション維持し続けてライセンス食いつぶすし、Webライセンス高いし。 おまけにC/S間独自っぽくてjQueryとか他所のライブラリを食い込ませる余地がないし。 ASP.NETですらjQueryサポートしてるのに。 WebServiceは割と楽だけど、投げたオブジェクトがCacheインスタンスになった後、更新に使えないのが不満。 新規インスタンスにしかならないから、OpenIdでロードしてプロパティ代入して、とかやらんとならん。 結局、cacheになって追加された機能って中途半端なものばっかり。 せめてSQLエクスプローラだけでも復活してくれ。 あの糞ポータルは生産性悪すぎ。 >>191 どうみてもSVGよりMの方が死んでますがなw >>193 よせよ、これからも暫くつきあうんだから。 とりあえず、newを排除できたんだからCOSは評価してもいいと思うんだ。 エラーメッセージは何とかならないのかな。 mac形式やcls形式で作ってるのに、エラー行はint形式での位置を通知されてもねぇ。 undefの変数が分かるようになりました、って今まで分からなかったのか。 これrow_number使えんのか。 21件目から30件目、とか取得したい場合どうするの? select top 30 .... where not exists ( select top 20 ... みたいにするの? それとも何か専用の書き方がある? 無い。TOPはあるけどOFFSETが無いから無意味。not existsでできた? やるならQueryの中で一部を切り出すしかない気がするんだけど、SELECT句のカラムを適切に 設定した%SQLQueryを生成する方法がリファレンス等を読んでもよくわからない。 一旦全結果セットとってから、抽出。 あまりにも膨大な結果セットになる場合は、取得範囲以外を切り捨てちゃう方法があったはず。 (多分 row num より効率が良いかも) row num が使えるDBも内部では同じ事しているから、row num が使えるだけ。 まー、row num が使えると便利だけど。 スタジオでINTルーチンをデバッグしようとすると 「エラー#6704:ターゲットがデバッガから終了しました」 ってなる。 もう一回続けてデバッグをしようとすると 「6707」って出るんだよな.. CACHE2008でファイアウォールもOFFなんだが、 何か設定がたりないのか... 誰か教えて〜 すみません。 質問ですが、ObjectScriptは、M Scriptの発展型なのでしょうか? ObjectScriptとM Scriptはどのような違いがありますか? PUBLIC宣言した変数以外ローカル扱いするプロシージャがある。実質New不要。 クラス定義ができてそれを扱える。クラス定義は内部でCOSに変換される。同じようにSQLも変換される。 ブロック構文が使える。if {} elseif {} else {} とか while {} とか。ブロック構文は$Testを無視する。 このへんかな、大きな違いは。 >>202 逆に私はCOS以降から入った人なので、知識としてif<sp><sp>else<sp><sp>とかがあるとは知っているけど、使いこなせない。 素のMのソースはマジ読めない。Mべったりの人は他にいると思うので、まだ大きな違いがあるなら、そちらの人が指摘してほしい。 個人的には、ブロックの導入が最大の違いだと思う。プロシージャも新ifも、ブロック構文が前提だから。 ああ、1日目は最初10分おきでやってたし 2日目は21:30スタートだったけど 今日は9:00スタートで2回戦は23:00のままだから結構開くんだ。 明日からは新馬戦は21:30にしよう。 ぜんぜん進んでないww 誰もいないのかな?? cache'2008も出たことだし、今後のことをきいてみたかったのに・・・ ど素人なんでROMってる 自分で組む参考にしようと常駐してるけど本当に進まないな 階層型DB選ぶなら大体これだろうと思うんだけどみんなリレーショナルなのか 俺もどしろーとww でも、、、個人レベルならcacheはあんまりメリットのでは?? 転職してこれ使うことになった 自分の発想にすごい合ってるかも だがマイナーなんだなぁ…… 何かだんだん慣れてくると癖になるな…… 恐ろしいほど早いし。 ただIsolation Levelが気になる……SQL Serverで言うREAD COMMITTEDなんだな…… 気にはなってるんだよねぇ。これ。 でも情報が少なすぎて。 クラスからルーチン(.int)を呼んで、引数渡して、戻り値受け取りたいんだけど可能? read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる