アプリ版:「スタンプのみでお礼する」機能のリリースについて

NDBが良くわかりません。
マニュアルで手がかりを探していますが、うまくいかないのでご存知の方がいらっしゃったら、教えてください。

ある規則性にしたがってN個にサブレンジ分割されたNDBがあります。サブレンジごとに10多重で処理を行いたいのですが、この場合のコーディングと基本的な考え方を教えてください。

1)サブレンジ分割の定義をしたNDBに対し、多重なしで全件読みは可能なのでしょうか?

2)サブレンジごとの処理を行いたい場合のコーディングはどのように行えばよいでしょうか?

○第1階層のレコードを1件読む。
この場合は GET FIRST ’レコード名’になるはずですが、このコーディングだけで、第1階層の最初のレコードをアクセスできるんでしょうか?
10個にサブレンジ分割していますが、どのサブレンジかはどうやって決まるのでしょう・・・・?

○第2階層を読む。
この場合は GET NEXT ’第2階層レコード名’ WITHIN ’SET名’ で良いのでしょうか?
この時点で、 
GET NEXT ’第2階層レコード名’ WITHIN ’サブレンジ名’ SUBRANGE というアクセス方法があるようなのですが、なにが違うのでしょう・・・?


どうかよろしくお願いします。

A 回答 (1件)

SEに聞いたり、富士通のDBMS開発を行っている事業所に、問い合わせることはできないのでしょうか?



NDBを使用した経験はありませんが、マルチベンダーでのシステム開発やリプレース案件で、NDBについて少し調べたことがあります。

(1)アクセスするサブレンジを限定せず、検索条件を指定しなければ、全件検索になると思います。
→排他制御の単位をサブレンジ(?)といった大きなものにしておかないと、性能上、問題になります。

(2)サブレンジを明示指定する、方式だったように思います。

>GET FIRST ’レコード名’
>このコーディングだけで、第1階層の最初のレコードをアクセスできるんでしょうか?

最初のレコードが検索できます。
最初のレコードとは、キー順に格納するタイプなら、
最小(or最大)キー値を持つレコードです。
ハッシュで格納先を決めるタイプなら、物理的に先頭に配置されたレコードです。

>10個にサブレンジ分割していますが、どのサブレンジかはどうやって決まるのでしょう・・・・?

サブレンジへの分割条件は、
分割キー値<=100・・・サブレンジA
100<分割キー値<=200・・・サブレンジB
200<分割キー値<=300・・・サブレンジC

といった感じで定義されていませんか?

(1)キー順で格納するタイプ
 検索条件がなくても、インデクスで格納先が分かる
(2)ハッシュで位置決めするタイプ
 検索条件がないと物理順検索になるので、先頭のサブレンジからサーチしていく

親子検索を行う場合は、WITHINで親子集合名(セット名)を指定してください。
親子集合名の指定がないと、子レコードを親子集合に関係なく、独立のレコードとして検索することになります。

>GET NEXT ’第2階層レコード名’ WITHIN ’サブレンジ名’ SUBRANGE というアクセス方法があるようなのですが、なにが違うのでしょう・・・?

マニュアル等で、第2階層レコードに対して指定するようになっていましたか?

WITHINのサブレンジ指定は、特定のサブレンジのみを検索対象にする場合の指定方法だと思われます。

通常、第1階層のレコードに、指定するのではないでしょうか?

この回答への補足

いつも優しく教えていただきありがとうございます。

もう何年も前に本番稼動しそのままになっていたシステムを年明けから変更しなければならないのですが、当時の開発に携わったメンバーは異動となっており、現行メンバーだけではうまく回らなくなっているのが現状です。
来月月末以降富士通さんにも参加していただくのですが、それまでの間に、テスト的にいろいろ試し、問題点を出そうとしているところです。ですが、思うような結果が得られていないため、今回質問させていただいております。

もしお分かりになる箇所がありましたら、本当に申し訳ないのですが、もう少し、お付き合いいただけたらと思います。よろしくお願いいたします。

(1)についてですが、アクセスするサブレンジを限定せず、、、、、とありましたが、この場合のサブレンジの限定とはプログラム上のことでしょうか?
たとえば全件読みの処理を、サブレンジ限定で行う場合(n多重で行う)と、サブレンジに関係なく全件読みを行う場合の違いはプログラム上のコーディングで決まるのでしょうか?

また、サブレンジ分割の件ですが、確かに10個に分割されていて、ご指摘のようにどのキーがどのサブレンジに格納されるかの定義がありました。この場合、単純にSTORE(書き出し)すると、システムで定義したサブレンジの場所に格納してくれるのでしょうか?

などなど、質問が初心者で申し訳ありませんが、どうぞよろしくお願いいたします。

補足日時:2006/01/01 19:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています