JP5474743B2 - プログラム開発支援システム - Google Patents
プログラム開発支援システム Download PDFInfo
- Publication number
- JP5474743B2 JP5474743B2 JP2010259607A JP2010259607A JP5474743B2 JP 5474743 B2 JP5474743 B2 JP 5474743B2 JP 2010259607 A JP2010259607 A JP 2010259607A JP 2010259607 A JP2010259607 A JP 2010259607A JP 5474743 B2 JP5474743 B2 JP 5474743B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- server
- processing unit
- search
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
Webシステム入門/第1回 Webサイトの構成とJ2EEサーバ インターネットURL:http://www.atmarkit.co.jp/fjava/rensai2/websys01/websys01.html 検索日:2010年10月6日
しかしながら、正規化を追求するとテーブルの数が増大すると共に、テーブル間の関係も複雑化する結果、これを操作するアプリケーションプログラムの開発に際してプログラマの負担が増大し、バグ発生の危険性が高まるという問題が生じる。
DBサーバ16は、DB管理システム17と、複数のテーブル18を備えている。
この図におけるスレッド32が、図1及び図2に表された検索条件分割処理部20、複数の検索処理部22、複数のデータ加工処理部24、検索結果統合処理部26として機能し、これらの機能構成部が実行する具体的な処理がタスク36に相当する。
まず、図4に従い、検索条件分割処理部20による処理手順を説明する。
すなわち、クライアント端末19から送信された検索条件をWebサーバ12経由でAPサーバ14が受信すると(S10)、検索条件分割処理部20は検索条件を解析し、検索条件の内容に応じて複数の検索条件に分割する(S12)。
例えば、「2010年における全チェーン店の売上を集計する」という検索条件が示された場合に、「2010年1月分の全チェーン店の売上」、「2010年2月の全チェーン店の売上」、「2010年3月の全チェーン店の売上」…というように、年を月単位に12分割することが該当する。
また、各チェーン店の所在地データに着目し、「2010年における東京所在チェーン店の売上」、「2010年における北海道所在チェーン店の売上」、「2010年における沖縄所在チェーン店の売上」…というように、全国を都道府県単位に47分割することも該当する。
もちろん、「2010年1月分の東京所在チェーン店の売上」や「2010年1月の北海道所在チェーン店の売上」のように、月×都道府県単位で564分割することもできる。
すなわち、検索条件分割処理部20は、47個の検索処理部22に対して、上記都道府県単位の検索処理を割り当てる(S14)。
まず検索処理部22は、自己に割り当てられた検索処理に必要な都道府県を指定したSQLを自動生成し、DBサーバ16に対して発行する(S20)。
この結果、一部のデータ加工処理部24は、受信データをキー項目でソートすると共に、キー項目の値に基づいて複数のデータに分割する処理を実行する。また、他のデータ加工処理部24は、分割されたデータに基づく値の集計処理や、当該値を指定したデータの抽出をDBサーバ16に依頼する処理などを実行する。
受信データの分割手法については後に例示するが、検索条件の内容に応じて論理的に分割する検索条件分割処理部20による分割と異なり、受信データの値や分量に応じた分割手法となる。データ加工処理部24による具体的な処理についても、後に例示する。
各検索処理部22は、DBサーバ16からのデータ送信が完了するまで、DBサーバ16から送信されるデータが一定量に達する度にS24〜S28の処理を繰り返す(S30/N、S22/Y)。
そして、DBサーバ16からのデータ送信が完了し、S24〜S28の最後の処理が完了した時点で(S30/Y)、検索処理部22はこれまでの部分的な処理結果の集計値を集計し(S32)、検索結果統合処理部26に集計結果を出力する(S34)。
まず検索結果統合処理部26は、各検索処理部22から集計結果が送信される度に、全ての検索処理部22からの集計結果が揃ったか否かをチェックし(S40、S42)、全てが揃った段階で全検索処理部の集計結果を集計する(S44)。
そして、その最終的な集計結果をWebサーバ12に送信する(S46)。
Webサーバ12は、この集計結果を含むWebファイルを生成し、クライアント端末19に送信することになる。
図7は、DBサーバ16に格納された各テーブル18を示しており、「顧客ID(主キー)」及び「地域」のデータ項目を備えた顧客管理テーブル40と、「予約ID(主キー)」、「店ID」、「顧客ID(外部キー)」、「金額」及び「予約年月日」のデータ項目を備えた予約管理テーブル42と、「予約ID(主キー/外部キー)」及び「売上年月日」のデータ項目を備えた売上管理テーブル44と、「予約ID(主キー/外部キー)」及び「予約取消年月日」のデータ項目を備えた予約取消管理テーブル46と、「請求ID(主キー)」、「請求年月日」及び「予約ID(外部キー)」のデータ項目を備えた請求管理テーブル48とによって、各店舗の売り上げが管理されている。
(1)キー項目は一つに限定される。
したがって、複数の項目の組合せによってキー項目を構成すること(複合キー)は、禁止される。
したがって、値に変更が生じた場合など、発生タイミングの異なる情報は別テーブルに格納されることとなる。
まず「NULL値禁止制約」とは、データ項目の値としてNULL(値なし)を充填することが禁止されることを意味しており、このようなNULL値の充填を想定したデータ項目の設定自体が許容されないことになる。
つぎに「フラグ値禁止制約」とは、データ項目の値としてフラグ値(「1/0」、「ON/OFF」、「TRUE/FALSE」等の2値データ)を充填することが禁止されることを意味しており、このようなフラグ値の充填を想定したデータ項目の設定自体が許容されないことになる。
「区分値禁止制約」とは、データ項目の値として区分値(「1:正社員」、「2:パート」、「3:アルバイト」等)を充填することが禁止されることを意味しており、このような区分値の充填を想定したデータ項目の設定自体が許容されないことになる。
また、「予約取消」に関するデータも、通常であれば予約管理テーブル42において「予約取消フラグ」等のデータ項目が設けられ、各レコードに「1/0」等のフラグ値を充填することで状態が管理されるところであるが、予約取消管理テーブル46を予約管理テーブル42とは別個に設けることにより、予約取消の状態管理がなされている。すなわち、この予約取消管理テーブル46に登録された予約IDが「予約取消」状態にあることとなり、レコードの有無によって予約取消の有無が表現されている。
図示は省略したが、このような場合には例えば「顧客ID」、「変更地域」、「変更年月日」等のデータ項目を備えた「顧客地域変更管理テーブル」が新たに設けられて、当該顧客の顧客ID、変更後の地域、変更年月日が格納される。
そして、DBサーバ16から該当日の請求年月日を備えた請求データが送信されると、検索処理部22は一定量のデータ(例えば1,000件のレコード相当分)単位で受信データを分割し、複数のデータ加工処理部24に以下の処理を割り当てる。
(1)各請求データの「予約ID」を指定したSQLを生成してDBサーバ16に発行し、「予約管理テーブル」から対応の予約データを取得する。
(2)送信された予約データの中で、該当店舗の「店ID」を有するデータのみを抽出し、他の店IDのデータを除外する。
(3)各予約データの「顧客ID」を指定したSQLを生成してDBサーバ16に発行し、顧客管理テーブル40から対応の顧客データを取得する。
(4)顧客データの「地域」毎に、予約データ中の「金額」の値を集計する。
これら(1)〜(4)の処理は、具体的にはタスク36として各データ加工処理部24のスレッドプール34に配置される。
検索結果統合処理部26は、全検索処理部22から8月1日〜8月31日までの全集計結果が集まった時点でこれらを集計し、Webサーバ12に出力する。
また、APサーバ14における部分的な集計が完了する度に、DBサーバ16から送信されたデータが占めていたメモリが解放され、データ量が格段に小さな集計結果データのみがメモリに格納される仕組みであるため、APサーバ14のメモリが大きなデータに占拠され続けることを回避できる。
まず一のデータ加工処理部24は、DBサーバ16から送信されたデータを2等分する位置を探索し、そこから前方不一致検索によってキー項目の変わり目を探しだし、データを2分割させる。
例えば、(a)のデータ列はキー項目の値として1〜6があるが、データ加工処理部24は「3」と「4」との間を境にこれを2分割させ、(b)及び(c)のデータ列を生成する。
この時点で、(e)のデータ列のキー項目の値は「3」のみとなるため、データ加工処理部24はそれ以上の分割を停止する。この(e)のデータ列については、他のデータ加工処理部24によって必要な計算処理等が実行される。
この時点で、(h)のデータ列のキー項目の値は「1」のみとなるため、データ加工処理部24はそれ以上の分割を停止する。この(h)のデータ列については、他のデータ加工処理部24によって必要な計算処理等が実行される。
同様に、(i)のデータ列のキー項目の値は「2」のみとなるため、データ加工処理部24はそれ以上の分割を停止する。この(i)のデータ列については、他のデータ加工処理部24によって必要な計算処理等が実行される。
この時点で、(g)のデータ列のキー項目の値は「6」のみとなるため、データ加工処理部24はそれ以上の分割を停止する。この(g)のデータ列については、他のデータ加工処理部24によって必要な計算処理等が実行される。
この時点で、(j)のデータ列のキー項目の値は「4」のみとなるため、データ加工処理部24はそれ以上の分割を停止する。この(j)のデータ列については、他のデータ加工処理部24によって必要な計算処理等が実行される。
同様に、(k)のデータ列のキー項目の値は「5」のみとなるため、データ加工処理部24はそれ以上の分割を停止する。この(k)のデータ列については、他のデータ加工処理部24によって必要な計算処理等が実行される。
この結果、大量のデータに対して複数のデータ加工処理部24による並列処理が可能となり、APサーバ14に複数搭載されたCPUコアの有効利用が可能となる。
このデータ加工処理部24による分割処理に際し、分割の回数(階層の深さ)に一定の限度を設けることもできる。
この結果、第1のスレッドプール50に配置されたタスク36の実行によってI/O Waitが発生した場合、スレッド32は第2のスレッドプール52に配置されたタスク36を待ち時間の間に処理することが可能となり、処理の効率化を図ることが可能となる。
これに対しては、各テーブル18毎に固有の型(クラス)を予め専用のツールを用いて自動生成しておき、APサーバ14側のアプリケーションプログラムをコーディングする際に各テーブル固有の型を指定するようにすることで、コンパイル時に型チェック(静的チェック)が機能するようになり、バグを事前に排除することが可能となる。
DBサーバ16は、上記と同様、DB管理システム17と、複数のテーブル18(a)〜18(c)を備えている。
また、開発端末70はPC等のコンピュータよりなり、OSやWebブラウザ、テキストエディタ等のプログラムを搭載している。
開発者は、このテーブル設定画面上で、テーブルの名称、データ項目名、データ型、桁数を指定し、テーブル設定部62に送信する。
これを受けたDB管理システム17は、この設定データに従って新規のテーブルをDBサーバ16の記憶装置内に生成する。
同様に、停止商品テーブル18(c)には承認された商品中で承認が停止された商品のID及び適用終了日のみが格納されている。この停止商品テーブル18(c)への商品IDの登録の有無によって、当該商品の承認停止の事実が表現されている。
(1)キー項目は一つに限定される。
(2)各テーブルにはレコードの追加のみが許容され、既存レコードの値の更新は禁止される。
(3)各テーブルのカラムには、NULL値禁止制約、フラグ値禁止制約、区分値禁止制約が課せられる。
図10においては、商品テーブル18(a)に対応した「Itemクラス(型)」と、承認済み商品テーブル18(b)に対応した「ItemApprovedクラス(型)」と、停止商品テーブル18(c)に対応した「ItemStoppedクラス(型)」とが生成され、開発支援システム10の型格納部66内に登録されている様子が描かれている。
これらクラスの実体は、対応テーブルの名称、データ項目、データ型、桁数等が記述されたプログラムである。
また、(2)の行においては「ItemApprovedクラスに対応したテーブル(承認済み商品テーブル18(b))から適用開始日(approveds)を抽出し、商品ID(ItemId)順にソートする」ことが規定されている。
(3)の行においては「ItemStoppedクラスに対応したテーブル(停止商品テーブル18(c))から適用終了日(stopped)を抽出し、商品ID(ItemId)順にソートする」ことが規定されている。
(4)の行においては、「承認済み商品(approvedItems)は、適用開始日(approveds)が付与された商品であり、これはItemクラスに属する」ことが規定されている。
(5)の行においては、「有効商品(validItems)は、承認済み商品(approvedItems)の中で適用終了日(stopped)が付与されていない商品であり、これはItemクラスに属する」ことが規定されている。
図12に示したように、ソースコードの各行にはクラスが指定されているため、コンパイラ68がソースコードをコンパイルするに際し、その記述内容と対応クラスの定義内容とを比較し、矛盾の有無を判定することができる。
例えば(2)の行において、仮に「ItemApproved[] stopped = select & sort by ItemId」と記述されていた場合、コンパイラ68は「ItemApprovedクラス」中には「stopped」のデータ項目が含まれていないことから、「コンパイルエラー」のメッセージを開発端末70に送信する。
この結果、開発者はコーディングの段階でバグを潰すことが可能となる。
12 Webサーバ
14 APサーバ
16 DBサーバ
17 DB管理システム
18 テーブル
19 クライアント端末
20 検索条件分割処理部
22 検索処理部
24 データ加工処理部
26 検索結果統合処理部
30 CPUコア
32 スレッド
34 スレッドプール
36 タスク
40 顧客管理テーブル
42 予約管理テーブル
44 売上管理テーブル
46 予約取消管理テーブル
48 請求管理テーブル
50 第1のスレッドプール
52 第2のスレッドプール
60 プログラム開発支援システム
62 テーブル設定部
64 型生成部
66 型格納部
68 コンパイラ
70 開発端末
Claims (1)
- キー項目が一つに限定される制約と、Null値、フラグ値及び区分値を格納するためのデータ項目の設定が禁止される制約と、データの更新が禁止される制約が設けられたテーブルを複数備えたデータベースサーバに対し、各テーブルに格納されたデータを操作するためのSQLを発行すると共に、取得したデータを加工する機能を果たすプログラムの、開発支援システムであって、
上記テーブルの設定情報に基づいて、少なくともテーブル名、データ項目及び各データ項目のデータ型を定義したクラスをテーブル毎に生成し、記憶手段に格納する型生成手段と、
上記のクラスを指定した上で各テーブルへの操作を指令するコードが記述されたソースプログラムが入力された場合に、これをコンパイルするに際し、上記記憶手段内のクラスを参照して記述内容に矛盾が存在するか否かを判定し、矛盾が存在する場合にはコンパイルエラーのメッセージを出力する手段と、
を備えたことを特徴とするプログラム開発支援システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010259607A JP5474743B2 (ja) | 2010-11-20 | 2010-11-20 | プログラム開発支援システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010259607A JP5474743B2 (ja) | 2010-11-20 | 2010-11-20 | プログラム開発支援システム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013264847A Division JP5681781B2 (ja) | 2013-12-24 | 2013-12-24 | データ利用システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012113373A JP2012113373A (ja) | 2012-06-14 |
JP5474743B2 true JP5474743B2 (ja) | 2014-04-16 |
Family
ID=46497555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010259607A Expired - Fee Related JP5474743B2 (ja) | 2010-11-20 | 2010-11-20 | プログラム開発支援システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5474743B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5604478B2 (ja) * | 2012-07-10 | 2014-10-08 | 株式会社野村総合研究所 | データ利用システム |
US9158658B2 (en) | 2013-10-15 | 2015-10-13 | International Business Machines Corporation | Detecting merge conflicts and compilation errors in a collaborative integrated development environment |
JP6371136B2 (ja) * | 2014-06-26 | 2018-08-08 | Kddi株式会社 | データ仮想化サーバ、データ仮想化サーバにおけるクエリ処理方法及びクエリ処理プログラム |
JP6435692B2 (ja) * | 2014-07-31 | 2018-12-12 | 富士通株式会社 | 情報処理システム、情報処理装置の制御装置、及び情報処理装置の制御プログラム |
CN110990400B (zh) * | 2019-11-20 | 2023-07-04 | 浙江大搜车软件技术有限公司 | 数据库查询方法、装置、计算机设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6258332A (ja) * | 1985-09-09 | 1987-03-14 | Fujitsu Ltd | 分散デ−タベ−ス管理システムの部分問合せ最適化方式 |
JPH08272598A (ja) * | 1995-03-29 | 1996-10-18 | Hitachi Ltd | ソフトウェア開発支援ツールにおけるデータ関連制約部品ソース展開方法 |
JP3584630B2 (ja) * | 1996-09-20 | 2004-11-04 | 株式会社日立製作所 | データベース処理システムにおける分類集計処理方法 |
JP3155991B2 (ja) * | 1997-04-09 | 2001-04-16 | 日本アイ・ビー・エム株式会社 | 集約演算実行方法及びコンピュータ・システム |
JP2001084257A (ja) * | 1999-09-13 | 2001-03-30 | Hitachi Ltd | 問合せ処理方法及びシステム |
JP2006004145A (ja) * | 2004-06-17 | 2006-01-05 | Ul Systems Inc | プログラムコード生成装置 |
JP5096775B2 (ja) * | 2007-03-30 | 2012-12-12 | 株式会社野村総合研究所 | データ処理システム |
-
2010
- 2010-11-20 JP JP2010259607A patent/JP5474743B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012113373A (ja) | 2012-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7090778B2 (ja) | 影響分析 | |
JP7023718B2 (ja) | リアルタイムデータストリームに対して実行するためのクエリの選択 | |
US10127250B2 (en) | Data transformation system, graphical mapping tool and method for creating a schema map | |
US9201558B1 (en) | Data transformation system, graphical mapping tool, and method for creating a schema map | |
US9582253B2 (en) | Expression editor system | |
US20110264636A1 (en) | Updating a data warehouse schema based on changes in an observation model | |
JP5474743B2 (ja) | プログラム開発支援システム | |
US8271520B1 (en) | Expression editor tool | |
US20100318494A1 (en) | Conversion of an application database to minimize time in single-user access mode | |
US9940182B1 (en) | Business rule engine validation systems and related methods | |
JP5878232B2 (ja) | データ処理システム | |
JP5608633B2 (ja) | データ利用システム | |
JP5681781B2 (ja) | データ利用システム | |
JP7373587B2 (ja) | Dbmsにおけるサービス管理 | |
Tamayo et al. | Understanding the behavior of database operations under program control | |
JP2012059215A (ja) | データ検索システム及びプログラム | |
JP5675666B2 (ja) | 時限データの履歴管理システム | |
CN115857918A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US11720482B1 (en) | Retrying failed test cases in software testing using parallel threads | |
JP5604403B2 (ja) | データ利用システム | |
Weise et al. | Learning Apache Apex: Real-time Streaming Applications with Apex | |
Liu | Two-level data staging etl for transaction data | |
JP5841704B2 (ja) | 時限データの履歴管理システム | |
Eisa | Parallel Processing for Data Retrieval in Odoo Enterprise Resource Planning Reporting System | |
CN113781195A (zh) | 财政数据监控方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130214 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131021 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131105 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131128 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131224 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140128 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140205 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |