(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024092952
(43)【公開日】2024-07-08
(54)【発明の名称】データベースにおける構文の性能向上のためのインデックス設定方法(METHOD FOR INDEXING TO IMPROVE DATABASE STATMENT PERFORMANCE)
(51)【国際特許分類】
G06F 16/22 20190101AFI20240701BHJP
【FI】
G06F16/22
【審査請求】有
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023183760
(22)【出願日】2023-10-26
(31)【優先権主張番号】10-2022-0184570
(32)【優先日】2022-12-26
(33)【優先権主張国・地域又は機関】KR
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.MySQL
(71)【出願人】
【識別番号】512096861
【氏名又は名称】株式会社 ビーアイマトリックス
【氏名又は名称原語表記】BI MATRIX CO.,LTD
【住所又は居所原語表記】New building 17F.,433,Seolleung-ro,Gangnam-gu,Seoul,Republic of Korea
(74)【代理人】
【識別番号】240000327
【弁護士】
【氏名又は名称】弁護士法人クレオ国際法律特許事務所
(72)【発明者】
【氏名】ペ ヨングン
(72)【発明者】
【氏名】ファン ソンミン
(72)【発明者】
【氏名】ハン ジンス
(72)【発明者】
【氏名】イ ヨンギュン
(72)【発明者】
【氏名】チェ ハンナ
(72)【発明者】
【氏名】チョ ジョンス
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA03
5B175KA08
(57)【要約】
【課題】データベースにおける構文の性能向上のためのインデックス設定の方法を提供する。
【解決手段】
本開示は、情報処理分野に係り、データベースにおける構文の性能向上のためのインデックス設定(indexing)の方法に関する。詳しくは、本開示は、原本データに係るユーザー入力構文を取得し、ユーザー入力構文に領域探索用の構文が含まれているか否かを確認し、上記領域探索用の構文に基づき上記原本データに係るインデックス情報を生成することが可能である。
【選択図】
図7
【特許請求の範囲】
【請求項1】
コンピューティング装置により実行される、テーブル上の原本データに対してインデックス設定を行う方法であって、
前記原本データに係るユーザー入力構文を取得する段階;
前記ユーザー入力構文に領域探索用の構文が含まれているか否かを確認する段階;
前記領域探索用の構文が予め設定された条件を満たしているか否かを確認する段階;及び
前記領域探索用の構文に基づき前記原本データに係るインデックス情報を生成する段階;
を含む、
方法。
【請求項2】
請求項1において、
前記予め設定された条件は、
前記領域探索用の構文が参照された頻度に係る条件を含み、
前記領域探索用の構文に基づき前記原本データに係るインデックス情報を生成する段階は、
前記領域探索用の構文が参照された頻度が予め設定された基準以上だった場合、インデックス情報を生成し、
前記領域探索用の構文が参照された頻度が予め設定された基準未満だった場合、前記領域探索用の構文が参照された頻度に係る情報を更新する段階
を含む、
方法。
【請求項3】
請求項1において、
前記ユーザー入力構文は、
原本データの一部に係るカラム情報と絞り込み情報のうち少なくとも1つを含むテンプレート生成用の構文である、
方法。
【請求項4】
請求項1において、
前記ユーザー入力構文は、
前記原本データの一部に係るカラム情報と絞り込み情報のうち少なくとも1つを含むデータ照会用の構文である、
方法。
【請求項5】
請求項1において、
前記領域探索用の構文は、
前記原本データに対する検索又は絞り込みを行い、部分データを抽出するための構文;及び
前記部分データに対する演算を行うための構文
を含む、
方法。
【請求項6】
請求項1において、
前記原本データに係るインデックス情報を生成する段階は、
前記原本データの値に係るレコードのキーバリューを設定する段階;及び
前記レコードのキーバリューに係る前記原本データ上の位置情報を確認する段階;
を含む、
方法。
【請求項7】
請求項6において、
前記レコードのキーバリューと前記位置情報のうち少なくとも1つは、昇順に基づきソートされる、
方法。
【請求項8】
コンピューター可読保存媒体に保存されたコンピュータープログラムであって、前記コンピュータープログラムは、1つ以上のプロセッサーによって実行される場合、前記1つ以上のプロセッサーに、テーブル上の原本データに対してインデックス設定を行うための動作を実行させるが、前記動作は、
原本データに係る領域探索用の構文を確認する動作;及び
前記領域探索用の構文に基づき前記原本データに係るインデックス情報を生成する動作;
を含む、
コンピューター可読保存媒体に保存されたコンピュータープログラム。
【請求項9】
コンピューティング装置であって、
少なくとも1つのプロセッサー;及び
メモリー;
を含み、
前記少なくとも1つのプロセッサーは、テーブル上の原本データに対してインデックス設定を行うために、
原本データに係る領域探索用の構文を確認し;且つ
前記領域探索用の構文に基づき前記原本データに係るインデックス情報を生成するように構成される
装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理分野に係り、データベースにおける構文(database statement)の性能向上のためのインデックス設定(indexing)の方法に関する。詳しくは、本開示は、原本データに係るユーザー入力構文を取得し、ユーザー入力構文に領域探索用の構文が含まれているか否かを確認し、上記領域探索用の構文に基づき上記原本データに係るインデックス情報を生成することが可能である。
【背景技術】
【0002】
コンピューター技術の発展により、企業及び官公庁等において、経営及び管理に係る業務のために多様なコンピュータープログラムを用いている。かかるコンピュータープログラムは、企業の会計、人事、財務、営業、貿易、購買、資材、生産及び在庫等の経営管理に必要な数多くのデータを保存し、処理することが可能である。かかるコンピュータープログラムを用いることで、ユーザー(企業及び官公庁等における業務の実務担当者、役員及び経営者)は、より便利且つ簡単に企業及び官公庁等において用いられているデータを保存し管理することが可能になる。企業及び官公庁等において用いられているコンピュータープログラムは、多様な形の文書を作成、編集、管理できる機能をサポートしている。一方、複数のデータを保存、処理、出力する際、上記複数のデータに対してインデックス設定(indexing)を行うことが可能である。上記インデックス設定如何を決定する際、上記インデックス設定により上記データの照会の速度が上がることが可能であるが、インデックス設定の作業を慎重に行う過程を要することやインデックス設定によりデータ更新の性能が低下する可能性があるという課題がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】大韓民国登録特許公報第10-0593661号
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、前述の背景技術に対応して案出されたものであり、ユーザーが原本データにアクセスする方法を提供することが可能である。
【0005】
本開示における技術的課題は、前述の技術的課題に限定されるものではなく、当業者は以下の記載内容に基づき、前述の技術的課題以外の課題についても明確に理解することが可能である。
【課題を解決するための手段】
【0006】
前述の課題を解決するための複数の実施例におけるコンピューティング装置により実行される、テーブル上の原本データについてインデックス設定を行う方法を提供する。上記方法は、上記原本データに係るユーザー入力構文を取得する段階;上記ユーザー入力構文に領域探索用の構文が含まれているか否かを確認する段階;上記領域探索用の構文が予め設定された条件を満たしているか否かを確認する段階;及び上記領域探索用の構文に基づき上記原本データに係るインデックス情報を生成する段階;を含むことが可能である。
【0007】
上記予め設定された条件は、上記領域探索用の構文が参照された頻度に係る条件を含み、上記領域探索用の構文に基づき上記原本データに係るインデックス情報を生成する段階は、上記領域探索用の構文が参照された頻度が予め設定された基準以上だった場合、インデックス情報を生成し、上記領域探索用の構文が参照された頻度が予め設定された基準未満だった場合、上記領域探索用の構文が参照された頻度に係る情報を更新する段階;を含むことが可能である。
【0008】
一実施例において、上記ユーザー入力構文は、原本データの一部に係るカラム情報と絞り込み情報のうち少なくとも1つを含むテンプレート生成用の構文になり得る。
【0009】
一実施例において、上記ユーザー入力構文は、上記原本データの一部に係るカラム情報と絞り込み情報のうち少なくとも1つを含むデータ照会用の構文になり得る。
【0010】
一実施例において、上記領域探索用の構文は、上記原本データに対する検索又は絞り込みを行い、部分データを抽出するための構文;及び上記部分データに対する演算を行うための構文を含むことが可能である。
【0011】
一実施例において、上記原本データに係るインデックス情報を生成する段階は、上記原本データの値に係るレコードのキーバリューを設定する段階;及び上記レコードのキーバリューに係る上記原本データ上の位置情報を確認する段階;を含むことが可能である。
【0012】
一実施例において、上記レコードのキーバリューと上記位置情報のうち少なくとも1つは、昇順に基づきソートされることが可能である。
【0013】
また、前述のような課題を解決するためのコンピューター可読保存媒体に保存されたコンピュータープログラムが開示される。
【0014】
上記コンピュータープログラムは、1つ以上のプロセッサーによって実行される場合、上記1つ以上のプロセッサーに、テーブル上の原本データに対してインデックス設定を行うための動作を実行させるが、上記動作は、原本データに係る領域探索用の構文を確認する動作;及び上記領域探索用の構文に基づき上記原本データに係るインデックス情報を生成する動作;を含むことが可能である。
【0015】
また、前述のような課題を解決するためのコンピューティング装置が開示される。
【0016】
上記コンピューティング装置は、少なくとも1つのプロセッサー;及びメモリー;を含み、上記少なくとも1つのプロセッサーは、テーブル上の原本データに対してインデックス設定を行うために、原本データに係る領域探索用の構文を確認し;且つ上記領域探索用の構文に基づき上記原本データに係るインデックス情報を生成するように構成されることが可能である。
【発明の効果】
【0017】
本開示は、前述の背景技術に対応して案出されたものであり、ユーザーが原本データにアクセスするときの性能を向上させることを可能にする方法を提供することが可能である。
本開示を適用可能な範囲として追加できるものは、以下の詳細な説明により明確になる。
【0018】
しかし、本発明の思想及び範囲における多様な変更及び修正は、当業者にとって明確に理解できるものであるため、詳細な説明及び本発明における好ましい実施例のような特定の実施例は、例示に過ぎないものと理解されるべきである。
【図面の簡単な説明】
【0019】
図面を参照して多様な様相について説明する。以下の図面の記載において、類似の図面番号は総体として類似の構成要素を示すために使われる。以下の実施例において、説明のために、多数の特定の細部事項が、1つ以上の様相の総合的な理解を助けるために提供される。しかし、かかる(複数の)様相を、かかる特定の細部事項がなくても実施できるということは明白である。他の例において、公知の構造及び装置が、1つ以上の様相の記載を容易にするためにブロック図の形で図示される。
【
図1】
図1は、本開示の一実施例におけるコンピューティング装置を説明するためのブロック構成図である。
【
図2】
図2は、本開示の一実施例において原本データを抽出して出力する方法を説明するためのフローチャートである。
【
図3】
図3は、本開示の一実施例においてコンピューティング装置の第1プログラムにおけるデータセットを第2プログラムにおいて出力する方法を示すフローチャートである。
【
図4】
図4は、本開示の一実施例においてスプレッドシートモジュールが原本データにアクセスして第1データを出力する方法を説明するためのフローチャートである。
【
図5】
図5は、本開示の一実施例においてスプレッドシートモジュールが原本データにアクセスして第1データを出力する方法を説明するための信号フローチャートである。
【
図6】
図6は、本開示の一実施例において原本データに係るインデックス情報を生成する方法を説明するためのフローチャートである。
【
図7】
図7は、本開示の一実施例において、ユーザーインターフェースにおける入力に基づき、第1プログラムがインデックス情報を生成する方法を説明するためのフローチャートである。
【
図8】
図8は、本開示の一実施例において、第2プログラムの入力に基づき第1プログラムがインデックス情報を生成する方法を説明するためのフローチャートである。
【
図9】
図9は、本開示の一実施例におけるインデックス情報を説明するための概念図である。
【
図10】
図10は、本開示の一実施例において第2プログラムがデータを照会する方法を説明するためのフローチャートである。
【
図11】
図11は、本開示内容の実施例が具現化されることが可能である、例示的なコンピューティング環境に係る一般的な概略図である。
【発明を実施するための形態】
【0020】
多様な実施例が以下に図面を参照しながら説明される。本明細書において多様な説明が本開示に対する理解を容易にするために示される。しかし、これらの実施例がこれらの具体的な説明がなくても間違いなく実施されることができる。
【0021】
本明細書において、「コンポーネント」、「モジュール」、「システム」等の用語は、コンピューター関連エンティティ、ハードウェア、ファームウェア、ソフトウェア、ソフトウェアとハードウェアとの組み合わせ、またはソフトウェアの実行を指す。例えば、コンポーネントは、プロセッサー上で実行される処理手順(procedure)、プロセッサー、オブジェクト、実行スレッド、プログラム、及び/またはコンピューターになり得るが、これらに限定されるものではない。例えば、コンピューティング装置で実行されるアプリケーションとコンピューティング装置は、両方ともコンポーネントになり得る。1つ以上のコンポーネントは、プロセッサー及び/または実行スレッドの中に常駐することができる。1つのコンポーネントは、1つのコンピューターの中でローカル化されることができる。1つのコンポーネントは、2つ以上のコンピューターに配分されることができる。また、このようなコンポーネントは、その内部に保存されている多様なデータ構造を持つ、多様なコンピューター可読媒体から実行することができる。コンポーネントは、例えば1つ以上のデータパケットを持つ信号(例えば、ローカルシステム、分散システムにおいて他のコンポーネントと相互作用する1つのコンポーネントからのデータ及び/または信号を通じて、他のシステムと、インターネットのようなネットワークを介して伝送されるデータ)によってローカル及び/または遠隔処理等を通じて通信することができる。
【0022】
以下の説明で用いられる構成要素に係る接尾語の「モジュール」及び「部」は、明細書作成を容易にするためだけの目的で付されたり、混用されるものであって、これらの接尾語自体がそれぞれ異なる特定の意味や役割を持つわけではない。
【0023】
また、本明細書において用いられる用語「情報」と「データ」は、しばしば相互置き換えできるように使うことができる。
【0024】
ある構成要素が他の構成要素に「つながって」いたり「連結されて」いたり、「接続して」いると記載された場合は、当該他の構成要素に直接つながっていたり、連結されていたり又は接続していることもあり得るが、その間に他の構成要素が存在することもあり得ると解釈されるべきである。一方、ある構成要素が他の構成要素に「直接つながって」いたり、「直接連結されていたり」、「直接接続して」いると記述されている場合は、その間に他の構成要素が存在しないと理解すべきである。
【0025】
用語「又は」は、排他的な「又は」ではなく、内包的な「又は」を意味する意図で使われる。つまり、特に特定されておらず、文脈上明確ではない場合、「XはA又はBを利用する」は、自然な内包的置換のうち1つを意味するものとする。つまり、XがAを利用したり;XがBを利用したり;又はXがA及びBの両方を利用する場合、「XはA又はBを利用する」は、これらのいずれにも当てはまるとすることができる。また、本明細書における「及び/又は」という用語は、取り挙げられた複数の関連アイテムのうち、1つ以上のアイテムの可能なすべての組み合わせを指し、含むものと理解される。
【0026】
また、述語としての「含む(含める)」及び/又は修飾語としての「含む(含める)」という用語は、当該特徴及び/又は構成要素が存在することを意味するが、1つ以上の他のさらなる特徴、構成要素及び/又はこれらのグループの存在又は追加を排除しないものと理解される。また、特に数が特定されていない場合や、単数の形を示すことが文脈上明確でない場合、本明細書と請求範囲において単数は、一般的に「1つ又はそれ以上」を意味するものと解釈されるべきである。
【0027】
以下において、図面の符号と関係なく同一又は類似の構成様相に対しては同一の参照番号を付し、それに係る重複する説明は省略する。さらに、本明細書に開示されている実施例を説明する際、それに係る公知の技術に関する具体的な説明が本明細書に開示されている実施例の要旨を不明確にする可能性があると判断される場合は、その詳細な説明を省略する。さらに、添付の図面は、本明細書に開示されている実施例に対する理解を容易にするためのものに過ぎず、添付の図面によって本明細書に開示されている技術的思想が制限されるわけではない。
【0028】
そして、「A又はBのうち少なくとも1つ」という用語については、「Aだけを含む場合」、「Bだけを含む場合」、「AとBの組み合わせの場合」を意味するものと解釈されたい。
【0029】
当業者は、さらに、ここに開示される実施例に係るものとして説明された多様な例示的論理的ブロック、構成、モジュール、回路、手段、ロジック及びアルゴリズム段階が、電子ハードウェア、コンピューターソフトウェア、またはその両方の組み合わせによって実現されることができることを認識すべきである。ハードウェアとソフトウェアとの相互交換性を明確に例示するために、多様な例示的コンポーネント、ブロック、構成、手段、ロジック、モジュール、回路及び段階が、それらの機能性の側面で一般的に上述された。そのような機能性がハードウェアとしてまたはソフトウェアとして実装されるか否かは、全般的なシステムに係る特定のアプリケーション(application)及び設計制限によって決まる。熟練した技術者は、個々の特定アプリケーションのために多様な方法で説明された機能性を実現できる。ただし、そのような実現に係る決定が本開示内容の領域を逸脱するものと解釈されてはならない。
【0030】
ここに示す実施例に係る説明は、本開示の技術分野において通常の知識を持つ者が本発明を利用したり、または実施できるように提供される。このような実施例に対する多様な変形は、本開示の技術分野において通常の知識を持つ者には明確に理解できるものである。ここに定義された一般的な原理は、本開示の範囲を逸脱することなく他の実施例に適用されることができる。従って、本発明はここに示す実施例だけに限定されるものではない。本発明はここに示す原理及び新規な特徴と一貫する最広義の範囲で解釈されるべきである。
【0031】
以下に、
図1乃至
図11を用いて、本開示においてコンピューティング装置が原本データを抽出して出力する方法について説明する。
【0032】
図1は、本開示の一実施例におけるコンピューティング装置を説明するためのブロック構成図である。
【0033】
図1に図示されたコンピューティング装置(100)の構成は、簡略化して示した例示に過ぎない。本開示の一実施例において、コンピューティング装置(100)には、コンピューティング装置(100)のコンピューティング環境を実装するための他の構成が含まれることが可能であり、開示されている構成のうち一部だけでコンピューティング装置(100)を構成することも可能である。
【0034】
コンピューティング装置(100)は、プロセッサー(110)、メモリー(130)、ネットワーク部(150)を含むことができる。
【0035】
プロセッサー(110)は、1つ以上のコアで構成されることが可能であり、コンピューティング中央処理装置(CPU:central processing unit)、汎用グラフィック処理装置(GPGPU:general purpose graphics processing unit)、テンサー処理装置(TPU:tensor processing unit)等のデータ分析、ディープラーニングのためのプロセッサーを含むことができる。
【0036】
本開示の一実施例において、メモリー(130)は、プロセッサー(110)が生成したり、決定した任意の形態の情報及びネットワーク部(150)が受信した任意の形態の情報を保存することができる。
【0037】
本開示の一実施例において、メモリー(130)は、フラッシュメモリータイプ(flash memory type)、ハードディスクタイプ(hard disk type)、マルチメディアカードマイクロタイプ(multimedia card micro type)、カードタイプのメモリー(例えばSD又はXDメモリー等)、ラム(Random Access Memory、RAM)、SRAM(Static Random Access Memory)、ロム(Read-Only Memory、ROM)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、PROM(Programmable Read-Only Memory)、磁気メモリー、磁気ディスク、光ディスクのうち少なくとも1つのタイプの保存媒体を含むことができる。コンピューティン装置(100)は、インターネット(internet)上で前記メモリー(130)の保存機能を実行するウェブストレージ(web storage)と連携して動作することも可能である。前述のメモリーに係る記述は、例示に過ぎず、本開示はこれらに限定されない。
【0038】
本開示の一実施例におけるネットワーク部(150)は、公衆電話交換網(PSTN:Public Switched Telephone Network)、xDSL(x Digital Subscriber Line)、RADSL(Rate Adaptive DSL)、MDSL(Multi Rate DSL)、VDSL(Very High Speed DSL)、UADSL(Universal Asymmetric DSL)、HDSL(High Bit Rate DSL)及び近距離通信網(LAN)等のような多様な有線通信システムを使用することができる。
【0039】
また、本明細書におけるネットワーク部(150)は、CDMA(Code Division Multi Access)、TDMA(Time Division Multi Access)、FDMA(Frequency Division Multi Access)、OFDMA(Orthogonal Frequency Division Multi Access)、SC-FDMA(Single Carrier-FDMA)及びその他のシステムのような多様な無線通信システムを利用することができる。
【0040】
本開示におけるネットワーク部(150)は、有線及び無線等のような通信の様態を問わずに構成されることができ、短距通信網(PAN:Personal Area Network)、近距離通信網(WAN:Wide Area Network)等の多様な通信網になり得る。また、上記ネットワークは、公知のワールドワイドウェブ(WWW:World Wide Web)になり得る他、赤外線(IrDA:Infrared Data Association)又は、ブルートゥース(登録商標:Bluetooth)のように、短距離通信に利用される無線伝送技術を利用することもできる。
【0041】
本明細書において説明された技術は、上記のネットワークだけでなく、他のネットワークで使われることもできる。
【0042】
図2は、本開示の一実施例において原本データを抽出して出力する方法を説明するためのフローチャートである。
【0043】
図2に示す内容を参照すると、本開示のコンピューティング装置は、原本データに係るデータ抽出関数を受信する段階(S100)、上記データ抽出関数に基づき構文(statement)を生成する段階(S200)、上記構文(statement)を実行してデータを抽出する段階(S300)、抽出されたデータを出力する段階(S400)を含むことが可能である。
【0044】
上記原本データに係るデータ抽出関数を受信する段階(S100)は、ユーザーインターフェース(UI)を介して、関数の形で入力されることが可能である。この場合、関数は、上記関数に変数が入力された状態の数式を含むことが可能である。一例として、上記ユーザーインターフェース(UI)は、原本データにおいてフィールドを選択するためのフィールド設定部、又は、データタイプを設定するためのデータ属性設定部において選択された、いずれか一つ以上の関数を含むことが可能であり、上記関数に設定値が入力された数式を含むことが可能である。また、上記ユーザーインターフェース(UI)は、原本データへのアクセス情報を入力するためのアクセス設定部をさらに含むことが可能である。上記ユーザーインターフェース(UI)が原本データを抽出するための方法については、
図5に示す内容に基づき後述する。
【0045】
また、上記関数は、モジュール化されたものになり得る。多少複雑になり得るデータ変換のためのプログラムを、上記モジュール化された関数で代替することが可能である。上記関数は、予め設定された規則に基づいて作成されることが可能であり、上記設定された規則はプログラム数式と同一の規則を含むことが可能である。
【0046】
一方、上記構文(statement)は、特定の作業を実行する特定の単位(例えば、1行)のコードである。一例として、上記構文(statement)は、変数に値を簡単に割り当てるものにもなり得るが、複数の演算及び関数を含む、より複雑な表現式にもなり得る。上記構文(statement)は、原本データのプログラム文法(syntax)に従うことが可能である。上記文法は、プログラミング言語の規則と構造を表すものであり、変数、演算子、制御構造の使用を含み、当該プログラミング言語でコードを作成する正しい方法を指定する。上記文法(syntax)は、原本データのプログラムの種類によって異なり、上記原本データのプログラムによってユーザーが習得しにくい場合があり、上記構文(statement)の生成が困難になる可能性がある。従って、上記モジュール化された関数を用いる場合、原本データのプログラムを問わず、抽象化された形で、ユーザーが便利に原本データを扱うことが可能である。
【0047】
上記データ抽出関数に基づき構文(statement)を生成する段階(S200)において、まず、コンピューティング装置(100)は、上記データ抽出関数が構文(statement)生成部に送られる前に、ヘッダーを含むマクロ定義(defining macro)及び特定の構成の拡張(expanding certain construct)のような作業を含む、前処理(preprocessing)を行うことが可能である。次に、コンピューティング装置(100)は、ソースコードを読み取って、上記抽出関数を一連の各トークンに分解する。ここで、上記トークンは、キーワード、識別子、文章符号等のように、上記抽出関数に含まれている単一の要素を指す。次に、コンピューティング装置(100)は、上記抽出関数から文法上の誤り(syntax error)を確認し、抽象構文木(AST)という、ツリーのような構造を作り、プロセッサー(110)が理解しやすいように変換する。次に、コンピューティング装置(100)は、変数が宣言される前に使用したり、間違った引数でモジュールを呼び出すことのような意味論的な誤りについて抽出関数を検査し、上記ASTを原本データのプログラムにおいて実行できる構文(statement)に変換する過程を含むことが可能である。つまり、抽象化された抽出関数を、ループと条件文とクエリとのうちいずれか1つ以上のように、原本データのプログラムが実行可能な下位レベルの構文(statement)に変換することが可能である。この場合、上記変換過程において、データの原本において用いることの可能なインデックス又はその他の性能向上を活用するようにクエリを最適化したり、クエリをより小さいパーツに分けて別途実行する作業が含まれることが可能である。上記最適化作業には、原本データにおいて用いることの可能なインデックス又はその他の性能向上を活用するようにクエリを最適化したり、クエリをより小さいパーツに分ける作業が含まれることが可能である。
【0048】
上記構文(statement)を実行してデータを抽出する段階(S300)は、上記構文が原本データにアクセスして上記原本データを管理するプログラムによって実行されることが可能である。また、コンピューティング装置(100)は、上記構文(statement)を実行する過程において用いられることの可能な全ての記号又は参照を確認し、それを準備することが可能である。一例として、上記構文(statement)は、データベース管理システム(DBMS)によって実行され、原本データは、リレーショナルデータベースに含まれているものになり得る。つまり、上記構文(statement)は、SQLのようなデータベースクエリ構文(query statement)になり得る。コンピューティング装置(100)において、応用プログラムがまずデータの原本の名前、ユーザーの名前、暗号(必要な場合)を指定する連結文字列を用いて原本データへの連結を作る。連結が設定されると、データベース管理システムは、API等の形で原本データに対してSQLを実行することが可能である。上記応用プログラムを通じて、本開示の抽出関数に基づき、生成されていたSQLを実行し、結果を検索し、トランザクションを管理することが可能である。
【0049】
この場合、上記応用プログラムは、SQLを分析し、原本データの基本形に対して実行する最も効率的な方法を再決定し、クエリを処理することが可能である。一例として、原本データにおいて用いることの可能なインデックス又はその他の性能向上を活用するようにクエリを最適化したり、クエリをより小さいパーツに分けて別途実行する作業が含まれることが可能であるが、これは上記段階S200において最適化された構文が生成された場合、省略されることが可能である。また、上記応用プログラムは、誤り検査を処理し、クエリ実行中に発生した全ての誤りが、応用プログラムに正しい形で報告されるようにすることが可能である。
【0050】
上記抽出されたデータを出力する段階(S400)において、一例として、SQLクエリ構文を実行した結果として抽出されたデータは、クライアントプログラムに返される。その後、クライアントプログラムは、結果を画面に表示したり、他の方式で処理することが可能である。結果が画面に表示される具体的な方法は、使用中のクライアント応用プログラムによって異なる。一例として、クライアントプログラムがコマンドラインインターフェース(CLI)である場合、結果がターミナルに表の形式で表示されることが可能であるが、上記クライアントプログラムが、ウェブブラウザーにおいて実行されるもののようなグラフィックユーザーインターフェース(GUI)である場合、結果は画面の表又はその他の視覚的表現で表示されることが可能であり、ユーザーは上記グラフィックユーザーインターフェース(GUI)を便利に利用することが可能である。
【0051】
図3は、本開示の一実施例においてコンピューティング装置の第1プログラムにおけるデータセットを第2プログラムにおいて出力する方法を示すフローチャートである。
【0052】
図3に示す内容を参照すると、本開示のコンピューティング装置は、データセットに係る第1ユーザー入力を受信する段階(S110)、第1プログラムにおける上記データセットを定義するための第2ユーザー入力を受信する段階(S210)、上記第2ユーザー入力を実行して上記データセットを取得する段階(S310)、上記データセットを第2プログラムにおいて出力する段階(S410)を含むことが可能である。
【0053】
上記データセットに係る第1ユーザー入力を受信する段階(S110)において、コンピューティング装置は、第1プログラムにおいて提供される第1ユーザーインターフェースにおいて第1ユーザー入力を受信することが可能である。一例として、ユーザー端末は、タッチスクリーン又は任意の形態のディスプレイ部を利用して、ユーザーが求めるアプリケーション又はアプリケーションの機能を実行するためのオブジェクトを含む第1ユーザーインターフェースを出力することが可能である。この場合、ユーザー端末に表示されたタブ又はアイコンを含むオブジェクトが選択された場合、ユーザー端末は選択された動作に対応するアプリケーション又はアプリケーションの機能を実行することが可能である。本開示内容の一実施例において、少なくとも1つのオブジェクトを含む画面、領域、識別情報、インジケーター、入力ウィンドウ、モジュール及び/又はタブ等がユーザーインターフェースを構成することが可能である。一例として、上記第1プログラムはスプレッドシートの形であることが可能であり、上記ユーザーインターフェースは1つ又は複数のセルを含むことが可能である。
【0054】
上記第1プログラムにおける上記データセットを定義するための第2ユーザー入力を受信する段階(S210)において、コンピューティング装置は、上記段階S110において取得された第1ユーザー入力に含まれている第1領域の識別情報のうち少なくとも一部と対応するように、データセットの識別情報を定義するための第2ユーザー入力を第1ユーザーインターフェースを介して受信することが可能である。例えば、第1領域の識別情報は、第1領域の名称と、第1領域が上記第1プログラムから第2プログラムにローディングされることを示すための第1インジケーターを含むことが可能であり、第1領域の識別情報は、第1インジケーターと識別子、データセットの名称をさらに含むことが可能である。上記第1領域の名称及び第1領域のインジケーターが指定される場合、コンピューティング装置は、第1プログラムにおける特定のデータセットが、第2プログラムにローディングされることを認識することが可能である。さらに、第1領域の識別情報は、第1領域を識別又は定義するための任意の形態の情報を意味することが可能である。
【0055】
上記第2ユーザー入力は、多様な設定が定義されたものになり得る。一例として、上記第2ユーザー入力は、指定されたデータセット名、経路、アクセス権限、フィールド情報のうち少なくとも1つを含むことが可能である。また、上記第2ユーザー入力は、構文作成に係るカラムを設定したり、レコード条件を指定するためのものになり得る。一例として、上記原本データと出力データとで、カラムの順番が変更されたり、カラム名が異なる場合にも、上記データセットの文法(syntax)に合ったデータクエリ構文(data query statement)が実行されるようにすることが可能である。また、上記第2ユーザー入力は、さらに、上記出力データに対するアノテーション(annotation)を表示することが可能である。
【0056】
上記第2ユーザー入力を実行して上記データセットを取得する段階(S310)において、コンピューティング装置は、スプレッドシートモジュールにおける特定の複数のデータの範囲を設定し、当該範囲について上記のような第2プログラムの識別情報の入力を受ける場合、上記第2プログラムの識別情報と上記第1プログラムの識別情報との比較を通じて、上記データセットを第2プログラムにローディングさせることが可能である。また、上記第2プログラムにおいては、識別情報及び/又は範囲に係る情報等のようなデータの名称、範囲等を識別するための任意の形態の追加情報を含むメタデータを追加で受信することが可能であり、上記メタデータは、メタ入力オブジェクトを生成することが可能である。
【0057】
また、上記データセットを第2プログラムにおいて出力する段階(S410)において、第2プログラムにおいてローディングされるデータセットに含まれている各々のデータの出力サイズを決定することも可能である。また、上記データセットは、メタデータ又はデータを照会した結果によって可変することが可能であり、予め決められた数式(OFFSET、COUNTA等)等を含むことが可能である。上記例示において、第2プログラムは、固定された画面に出力されることが可能であるため、上記データセットの出力範囲によって、含まれているデータの各々のサイズ及び位置が可変することが可能である。上記出力の形態は、ユーザーが出力されるデータの項目を決定できるようにするコンボボックス及びマルチコンボボックス、テキスト情報を含むテキストボックス、日付情報を含むカレンダー等によって多様な形態に変化することが可能である。一例として、第3領域において特定の年度が入力された場合、第1プログラムのデータセットにおいて特定の年度に対応する複数のデータが、第2プログラムにおいてローディングされ出力されることが可能である。
【0058】
また、第2プログラムにおいては、データセットとともに出力される追加情報と、上記データセットに係る原本データとが、互いに連動しない場合がある。この場合、コンピューティング装置(100)は、上記原本データの情報を変化させたり、SQLクエリ構文を複雑に変更することなく、上記第2プログラムに追加情報を出力することが可能である。
【0059】
図4及び
図5は、本開示の一実施例に基づくスプレッドシートモジュールが原本データにアクセスして第1データを出力する方法を説明するためのフローチャートである。
【0060】
図4及び
図5に示す内容を参照すると、本開示のコンピューティング装置は、スプレッドシートモジュールがデータ抽出関数のパラメータを受信する段階(S120)、原本データにアクセスするための第1構文を生成する段階(S220)、上記原本データから第1データを取得する段階(S320)、上記スプレッドシートモジュールを通じて第1データを出力する段階(S420)を含むことが可能である。
【0061】
上記原本データは、リレーショナルデータベースに含まれているものになり得るが、一例として、上記データベースは、ORACLE(オラクル)、PostgreSQL(ポストグレスキューエル)、MySQL、SQL Server(MS-SQL)、SQLiteのうち少なくとも1つのリレーショナルデータベース管理システム(RDBMS)により制御されるものになり得る。
【0062】
上記スプレッドシートモジュールがデータ抽出関数のパラメータを受信する段階(S120)において、上記スプレッドシートモジュールは、上記データ抽出関数のパラメータを第1インターフェースから受信することが可能である。上記パラメータは、第1アクセス設定情報及び第1構文設定情報を含むことが可能である。上記第1アクセス設定情報は、関連する1つ又は複数のデータベース名、データベースの種類、一連番号、データベースへの経路又はアクセス権限、上記データベースに含まれているオブジェクトテーブルに係る一連番号、上記オブジェクトテーブルに係るフィールドの数又はアクセス権限のうち少なくとも1つに係る設定を含むことが可能である。
【0063】
第1構文設定情報は、上記スプレッドシートモジュールにおいて上記データベース管理システム(RDBMS)に係る設定を行う場合、上記データベースの種類に応じて、文法(syntax)に沿った、当該データベースに合わせた構文(statement)が生成されることが可能である。一例として、ユーザーは、本開示を通じて、データベースの種類を問わず、スプレッドシートモジュールが提供するユーザーインターフェース(UI)において提供する抽象化された数式を用いて便利に構文を生成することが可能である。上記第2ユーザー入力が表示されるユーザーインターフェース(UI)は、スプレッドシート上のセルに表示されることが可能であり、ユーザーによって確認及び制御されることが可能である。
【0064】
また、上記スプレッドシートモジュールは、上記構文が生成、読み取り、更新、削除(Create、Read、Update、Delete;CRUD)のうちいずれか一つ以上の動作を行うSQLクエリと関連するものになり得る。この場合、上記SQLクエリは、挿入(Insert)、更新(Update)、削除(Delete)のうちいずれか1つの命令に係る信号であることが可能であり、上記信号は、上記SQLクエリの名称又は略語としてレッドシートのセルに入力されたり、表示されることが可能である。一例として、上記表示は、下記表1のように表すことが可能である。
【0065】
【0066】
また、上記第2ユーザー入力は、構文作成に係るカラムを設定したり、レコード条件を指定するためのものになり得る。一例として、上記原本データと出力データとで、カラムの順番が変更されたり、カラム名が異なる場合にも、SQLクエリ構文が実行されるようにすることが可能である。また、上記第2ユーザー入力は、上記出力データに対するアノテーションを表示することが可能である。
【0067】
図6は、本開示の一実施例において原本データに係るインデックス情報を生成する方法を説明するためのフローチャートである。
【0068】
図6に示す内容を参照すると、本開示のインデックス情報を生成する方法は、原本データに係るユーザー入力構文を取得する段階(S130)、ユーザー入力構文に領域探索用の構文が含まれているか否かを確認する段階(S140)、インデックス情報を生成するか否かを決定する段階(S500)を含むことが可能である。
【0069】
上記原本データに係るユーザー入力構文を取得する段階(S130)と上記ユーザー入力構文に領域探索用の構文が含まれているか否かを確認する段階(S140)において、上記ユーザー入力構文は、原本データの一部に係るカラム情報と絞り込み情報のうち少なくとも1つを含むテンプレート生成用の構文又はデータ照会用の構文になり得る。上記ユーザー入力構文がテンプレート生成用の構文である場合、上記領域探索用の構文が含まれているか否かを確認する段階については、
図7に示す内容に基づき後述する。また、上記ユーザー入力構文がテンプレート生成用の構文である場合については、
図8に示す内容に基づき後述する。
【0070】
上記領域探索用の構文は、上記原本データに対する検索又は絞り込みを行い、部分データを抽出するための構文と、上記部分データに対する演算を行うための構文とを含むことが可能である。また、上記ユーザー入力構文の一部に含まれている構文になり得る。一例として、上記領域探索用の構文は、保存プロシージャ(SP:stored procedure)を活用した構文になり得る。上記保存プロシージャ(SP:stored procedure)は、これを特定するための名称及び媒介変数を指定する作業が含まれることが可能である。また、上記保存プロシージャ(SP:stored procedure)は、原本データに係る構文になり得るが、上記原本データが変更される場合、上記保存プロシージャ(SP:stored procedure)も変更されることが可能である。
【0071】
上記インデックス情報を生成するか否かを決定する段階(S500)は、上記領域探索用の構文が予め設定された条件を満たしているか否かを確認する段階を含むことが可能であり、上記予め設定された条件は、上記領域探索用の構文が参照された頻度に係る条件を含むことが可能である。原本データの全体についてインデックス情報を生成せず、選択的にインデックス情報を保存する場合、その後原本データにより早くアクセスするとともに、インデックス情報を保存するための空間を節約することが可能であり、原本データにレコードを追加する作業にも性能低下を最小化することが可能である。
【0072】
本開示の方法は、上記領域探索用の構文が参照された頻度が予め設定された基準以上だった場合、インデックス情報を生成する段階(S610)を含むことが可能である。また、上記領域探索用の構文が参照された頻度が予め設定された基準未満だった場合は、上記領域探索用の構文が参照された頻度に係る情報を更新する段階(S620)を含むことが可能である。一例として、上記領域探索用の構文が参照されたことが一度でもあった場合、インデックス情報を生成することが可能である。一方、上記領域探索用の構文が参照されたことがなかった場合、インデックス情報を生成せず、上記領域探索用の構文が参照された頻度に係る情報を更新することが可能である。
【0073】
上記領域探索用の構文が参照される頻度を判断するための設定は、ユーザー入力によって調節されることが可能である。上記インデックス情報を生成するか否かを決定するとき、上記インデックス情報を生成することで発生する利点と、それにより発生するオーバーヘッド間の長所と短所を踏まえて選択することが可能である。一例として、上記インデックス情報を保存するように設定するためにフィールドの選択性、データの類型、クエリの頻度、データのサイズ、更新頻度と原本データの種類のうち少なくとも1つを考慮することが可能である。
【0074】
具体的には、選択性のレベルが高いフィールドの場合、頻度が低くてもインデックス情報を生成するようにすることが可能である。つまり、多くの行比率に対して固有の値を有するフィールドを選択し、上記インデックス情報がその後検索結果を絞るのに、効果的に作動することが可能である。また、整数(integer)及びブーリアン(Boolean)のフィールドは、可能な値の場合の数が少ないため、頻度が低くても上記領域探索用の構文に係るインデックス情報を保存するように設定することが可能である。一方、テキストフィールドは、多数の固有値を含むことが可能であるため、参照される頻度が高い場合には上記領域探索用の構文に係るインデックス情報を保存するように設定することが可能である。
【0075】
また、原本データにアクセスする構文がWHERE句及びJOINの条件でクエリに頻繁に用いられているフィールドの場合、頻度が低くても上記領域探索用の構文に係るインデックス情報を保存するように設定することで、上記SQLクエリの性能を向上させることが可能である。
【0076】
また、インデックス情報を保存する余裕がある場合、頻度が低くても上記領域探索用の構文に係るインデックス情報を保存するように設定することが可能である。一方、上記インデックス情報を保存する空間に対し、データのサイズが大きい場合、固有値が多い非常に大きいテーブルやフィールドについては、参照される頻度が高い場合には上記領域探索用の構文に係るインデックス情報を保存するように設定することで上記インデックス情報を保存する空間を節約できるようになるだけでなく、その後データを挿入したり、修正するときに上記インデックス情報を更新するためにより多くの時間を要する現象を防ぐことが可能である。それと同様に、原本データのフィールドが頻繁に更新される場合、参照される頻度が高い場合には上記領域探索用の構文に係るインデックス情報を保存するように設定し、上記原本データのフィールドが修正されるたびに上記インデックス情報も更新されることで性能が低下する現象を減らすことが可能である。
【0077】
図7は、本開示の一実施例において、ユーザーインターフェースにおける入力に基づき、第1プログラムがインデックス情報を生成する方法を説明するためのフローチャートである。
【0078】
図7に示す内容を参照すると、上記第1プログラムが上記第1ユーザーインターフェースを介してテンプレート生成用の構文の入力を受ける段階(S131)、入力された上記テンプレート生成用の構文に対する数式分析を行う段階(S132)と、上記テンプレート生成用の構文に領域探索用の構文が含まれているか否かを確認する段階(S141)とを含むことが可能である。
【0079】
上記第1プログラムが、上記第1ユーザーインターフェースを介してテンプレート生成用の構文の入力を受ける段階(S131)において、上記第1ユーザーインターフェース(210)は、上記テンプレート生成用の構文を商用のスプレッドシート(例えば、Excel又はGoogleスプレッドシート)に用いられる関数の形で入力を受けることが可能である。この場合、第1プログラム(200)のユーザーは、上記原本データに係る構文を学習することなく、原本データに係るテンプレートを生成することが可能である。
【0080】
上記入力を受けた上記テンプレート生成用の構文に対する数式分析を行う段階(S132)においては、領域探索用の構文を取得することが可能である。上記領域探索用の構文を取得するための一例として、まず数式の形になっている上記テンプレート生成用の構文を原本データに対するクエリ構文に変更する段階を含むことが可能である。次に、上記原本データに対するクエリ構文を1つ以上の保存プロシージャ(SP:stored procedure)に変換し、領域探索用の構文を生成する段階を含むことが可能である。
【0081】
上記テンプレートに領域探索用の構文が含まれているか否かを確認する段階(S141)において、上記テンプレートに領域探索用の構文が含まれている場合、インデックス情報を生成する段階(S610)を含むことが可能である。この場合、上記テンプレートに基づき原本データを照会する場合、性能が向上することが可能である。
【0082】
図8は、本開示の一実施例において、第2プログラムの入力に基づき第1プログラムがインデックス情報を生成する方法を説明するためのフローチャートである。
【0083】
図8に示す内容を参照すると、本開示の上記第1プログラムが上記第2プログラムを通じてデータ照会用の構文の入力を受ける段階(S133)、入力された上記データ照会用の構文に対する数式分析を行う段階(S134)、インデックス情報を生成するか否かを決定する段階(S500)を含むことが可能である。
【0084】
上記第1プログラムが上記第2プログラムを通じてデータ照会用の構文の入力を受ける段階(S133)において、上記第2プログラム(300)は、上記データ照会用の構文を商用のスプレッドシート(例えば、Excel又はGoogleスプレッドシート)に用いられる関数の形で入力を受けることが可能である。この場合、第2プログラム(300)のユーザーは、SQL構文のような上記原本データに係る構文を学習することなく、第1プログラム(200)を活用することが可能である。
【0085】
上記入力された上記データ照会用の構文に対する数式分析を行う段階(S134)においては、領域探索用の構文を取得することが可能である。上記領域探索用の構文を取得するための一例として、まず数式の形になっている、入力された上記データ照会用の構文を、原本データに対するクエリ構文に変更する段階を含むことが可能である。次に、上記原本データに対するクエリ構文を1つ以上の保存プロシージャ(SP:stored procedure)に変換し、領域探索用の構文を生成する段階を含むことが可能である。
【0086】
上記インデックス情報を生成するか否かを確認する段階(S500)において、上記データ照会用の構文が予め設定された条件を満たしている場合、上記インデックス情報を生成することが可能である。上記データ照会用の構文が予め設定された条件を満たしている場合、インデックス情報を生成する段階(S610)をさらに含むことが可能である。上記設定された条件は、上記領域探索用の構文が参照される頻度が予め設定された基準以上になるという条件になり得る。
【0087】
図9は、本開示の一実施例におけるインデックス情報を説明するための概念図である。
【0088】
図9に示す内容を参照すると、本開示の上記原本データ(220)に係るインデックス情報(230)は、上記原本データ(220)の値に係るレコードのキーバリュー(231)及び上記原本データ上の位置情報(232)を含む別個のテーブルになり得る。上記原本データに係るインデックス情報(230)を生成する段階は、上記原本データ(220)の値に係るレコードのキーバリュー(231)を設定する段階及び上記レコードのキーバリューに係る上記原本データ上の位置情報(232)を確認する段階を含むことが可能である。
【0089】
上記レコードのキーバリュー(231)と上記位置情報(232)のうち少なくとも1つは、予め設定された方式によりソートされることが可能である。一例として、上記レコードのキーバリュー(231)又は上記位置情報(232)は、昇順に基づきソートされることが可能である。この場合、その後原本データに係るクエリが実行されるとき、コンピューティング装置は、二分探索アルゴリズムを用いてインデックス情報に含まれているキーの値を半分にし、1度に残りの半分を捨てることで検索範囲を迅速に絞ることが可能である。反対に、上記レコードのキーバリュー(231)及び上記位置情報(232)がソートされていなかったり、降順にソートされている場合、コンピューティング装置は、原本データに係る全体のインデックスをスキャンしたり、より複雑な検索を行わなければならないため、速度が落ちて効率が低下する可能性があるが、それは検索速度が少し向上しただけでクエリの性能が大きく変わる可能性がある、レコード数の多い大型テーブルにおいては特に重要な問題になり得る。
【0090】
図10は、本開示の一実施例において第2プログラムがデータを照会する方法を説明するためのフローチャートである。
【0091】
図10に示す内容を参照すると、本開示の上記第1プログラムが上記第2プログラムを通じてデータ照会用の構文の入力を受ける段階(S133)、入力された上記データ照会用の構文に対する数式分析を行う段階(S134)、分析された上記データ照会用の構文に領域探索用の構文が含まれているか否かを確認する段階(S142)を含むことが可能である。
【0092】
上記データ照会用構文に領域探索用の構文が含まれているか否かを確認する段階(S142)において、上記データ照会用の構文に領域探索用の構文が含まれていた場合、上記領域探索用の構文に係るインデックス情報を照会する段階(S630)を含むことが可能である。
【0093】
上記領域探索用の構文に係るインデックス情報を照会する段階(S630)において、上記領域探索用の構文に係るインデックス情報が存在する場合、上記インデックス情報に基づき、出力情報を生成する段階(S430)をさらに含むことが可能である。次に上記出力情報に基づき、画面を更新する段階(S440)をさらに含むことが可能である。上記画面は、第2プログラム(300)に出力されたものになり得る。上記インデックス情報が存在する場合、上記出力情報が生成される速度が高い可能性がある。
【0094】
図11は、本開示内容の実施例が具現化されることが可能である、例示的なコンピューティング環境に係る一般的な概略図である。
【0095】
図11に係る記載を参照すると、上記コンピュータープログラムは、1つ以上のプロセッサーによって実行される場合、原本データを抽出して出力する動作を行うようにすることが可能である。
【0096】
本開示の一実施例によると、上記動作は、上記1つ以上のプロセッサーに、データをスプレッドシートに表示するための動作を実行させるために、データベースから画像を含む第1データを取得する動作;及び上記第1データに基づき、スプレッドシートモジュールを通じて、上記第1データをスプレッドシートに表示する動作;を含むことが可能である。
【0097】
本開示の他の実施例によると、上記動作は、上記1つ以上のプロセッサーに、データをスプレッドシートに出力するための動作を実行させるために、スプレッドシートモジュールがデータ抽出関数のパラメータを受信する動作;上記データ抽出関数のパラメータに基づき、データベースにアクセスするための第1構文を生成する動作;上記第1構文を用いて上記データベースから第1データを取得する動作;及び上記データ抽出関数のパラメータに基づき上記スプレッドシートモジュールを通じて上記第1データを出力する動作;を含むことが可能である。
【0098】
本開示のさらに他の実施例によると、上記動作は、テーブル上の原本データに対してインデックス設定を行うために、原本データに係る領域探索用の構文を確認する動作;及び上記領域探索用の構文に基づき上記原本データに係るインデックス情報を生成する動作;を含むことが可能である。
【0099】
また、本開示の一実施例に基づき、データ構造を保存したコンピューター可読媒体が開示される。
【0100】
データ構造は、データに対する効率的なアクセスと修正を可能にするデータの組織、管理、保存を意味することが可能である。データ構造は、特定の課題(例えば、最短時間でのデータ検索、データ保存、データ修正)を解決するためのデータの組織を意味することが可能である。データ構造は、特定のデータ処理機能をサポートするように設計された、複数のデータ要素間の物理的あるいは論理的関係と定義されることも可能である。複数のデータ要素間の論理的関係は、複数のユーザー定義のデータ要素間の連結関係を含むことが可能である。複数のデータ要素間の物理的関係は、コンピューター可読保存媒体(例えば、永久保存装置)に物理的に保存されている複数のデータ要素間の実際の関係を含むことが可能である。データ構造は、具体的にデータの集合、データ間の関係、データに適用できる関数や命令を含むことが可能である。効果的に設計されたデータ構造を活用することで、コンピューティング装置は、コンピューティング装置のリソースの使用を最低限に抑えながら、演算を行うことが可能である。具体的に、コンピューティング装置は、効果的に設計されたデータ構造を通じて、演算、読み取り、取り込み、削除、比較、交換、検索の効率を高めることが可能である。
【0101】
データ構造は、データ構造の形態を基準に、線形データ構造と非線形データ構造に分類されることが可能である。線形データ構造は、1つのデータの後にデータが1つだけ繋がっている構造になり得る。線形データ構造は、リスト(List)、スタック(Stack)、キュー(Queue)、デック(Deque)を含むことが可能である。リストは、内部的に順序が存在する一連のデータの集合を意味することが可能である。リストは、連結リスト(Linked List)を含むことが可能である。連結リストは、各々のデータがポインターを持ち、一列に繋がっている方式でデータが連結されているデータ構造になり得る。連結リストにおいて、ポインターは、次のデータや前のデータとの連結に係る情報を含むことが可能である。連結リストは、形態によって片方向連結リスト、双方向連結リスト、循環連結リストとして表現されることが可能である。スタックは、データへのアクセスに制限が付くデータ配列構造になり得る。スタックは、データ構造の片端でのみデータを処理(例えば、挿入又は削除)できる線形データ構造になり得る。スタックに保存されているデータは、後入れ先出しのデータ構造(LIFO-Last In First Out)になり得る。キューもデータへのアクセスに制限が付くデータ配列構造であるが、スタックとの違いは、先入れ先出しのデータ構造(FIFO-First In First Out)になっているということになり得る。デックは、データ構造の両端でデータを処理できるデータ構造になり得る。
【0102】
非線形データ構造は、1つのデータの後に複数のデータが繋がっている構造になり得る。非線形データ構造は、グラフ(Graph)データ構造を含むことが可能である。グラフデータ構造は、頂点(Vertex)と辺(Edge)で定義することが可能であり、辺は異なる2つの頂点を繋ぐ線を含むことが可能である。グラフデータ構造は、ツリー(Tree)データ構造を含むことが可能である。ツリーデータ構造は、ツリーに含まれている複数の頂点のうち、相異なる2つの頂点を繋ぐ経路が1つであるデータ構造になり得る。つまり、グラフデータ構造において、ループ(loop)を形成しないデータ構造になり得る。
【0103】
データ構造は、神経回路網に入力されるデータを含むことが可能である。神経回路網に入力されるデータを含むデータ構造は、コンピューター可読媒体に保存されることが可能である。神経回路網に入力されるデータは、神経回路網の学習過程において入力される学習データ及び/又は学習が完了した神経回路網に入力される入力データを含むことが可能である。神経回路網に入力されるデータは、前処理(pre-processing)を行ったデータ及び/又は前処理の対象となるデータを含むことが可能である。前処理は、データを神経回路網に入力するためのデータ処理過程を含むことが可能である。従って、データ構造は、前処理の対象となるデータ及び前処理により発生するデータを含むことが可能である。前述のデータ構造は、例示に過ぎず、本開示はこれらに限定されない。
【0104】
データ構造は、神経回路網の重みを含むことが可能である。(本明細書において、重みとパラメータは同一の意味を持つとみなすことが可能である)そして、神経回路網の重みを含むデータ構造は、コンピューター可読媒体に保存されることが可能である。神経回路網は、複数の重みを含むことが可能である。重みは、可変的なものになり得るが、神経回路網が求める機能を実行するために、ユーザー又はアルゴリズムに応じてである。例えば、1つの出力ノードに、1つ以上の入力ノードが、各々のリンクによって相互連結されている場合、出力ノードは、上記出力ノードに繋がっている入力ノードに入力された複数の値と、各々の入力ノードに対応するリンクに設定された重みとに基づき、出力ノードから出力されるデータの値を決定することが可能である。前述のデータ構造は、例示に過ぎず、本開示はこれらに限定されない。
【0105】
本開示が一般的にコンピューティング装置により具現化されることができると前述されているが、当業者であれば本開示が一つ以上のコンピューター上で実行されることのできるコンピューター実行可能命令及び/またはその他のプログラムモジュールと結合して及び/またはハードウェアとソフトウェアの組み合わせとして具現化されることができるということをよく理解できるだろう。
【0106】
一般的に、本明細書におけるモジュールは、特定のタスクを実行したり特定の抽象的なデータ類型を実装するルーティン、プログラム、コンポーネント、データ構造、その他等々を含む。また、当業者なら本開示の方法がシングルプロセッサーまたはマルチプロセッサーコンピューターシステム、ミニコンピューター、メインフレームコンピューターはもちろん、パーソナルコンピューター、ハンドヘルド(handheld)コンピューティング装置、マイクロプロセッサー基盤、またはプログラム可能な家電製品、その他等々(これらは、それぞれ1つ以上の関連する装置と繋がって動作することができる)をはじめとする、他のコンピューターシステムの構成によって実施されることができることをよく理解できるだろう。
【0107】
本開示において説明された実施例は、さらに、あるタスクが通信ネットワークを通じて繋がっている遠隔処理装置によって実行される分散コンピューティング環境で実施されることができる。分散コンピューティング環境において、プログラムモジュールは、ローカルや遠隔メモリー保存装置の両方に位置することができる。
【0108】
コンピューターは、多様なコンピューター可読媒体を含む。コンピューターによってアクセス可能な媒体はいずれもコンピューター可読媒体になり得るが、このようなコンピューター可読媒体は揮発性及び非揮発性媒体、一時的(transitory)及び非一時的(non-transitory)媒体、移動式及び非移動式媒体を含む。制限ではなく例として、コンピューター可読媒体は、コンピューター可読保存媒体及びコンピューター可読伝送媒体を含むことができる。コンピューター可読保存媒体は、コンピューター可読命令、データ構造、プログラムモジュール又はその他のデータのような情報を保存する任意の方法又は技術により実装される揮発性及び非揮発性媒体、一時的及び非一時的媒体、移動式及び非移動式媒体を含む。コンピューター可読保存媒体は、RAM、ROM、EEPROM、フラッシュメモリーまたはその他のメモリー技術、CD-ROM、DVD(digital video disk)またはその他の光ディスク保存装置、磁気カセット、磁気テープ、磁気ディスク保存装置またはその他の磁気保存装置、またはコンピューターによってアクセスされることができ、情報を保存するのに使われることのできる任意のその他の媒体を含むが、これに限定されない。
【0109】
コンピューター可読伝送媒体は、通常、搬送波(carrier wave)またはその他の伝送メカニズム(transport mechanism)のような被変調データ信号(modulated data signal)にコンピューター可読命令、データ構造、プログラムモジュールまたはその他のデータ等を実装し、すべての情報伝達媒体を含む。被変調データ信号という用語は、信号の中で情報をエンコードするように、その信号の特性のうち1つ以上を設定または変更した信号を意味する。制限ではなく例として、コンピューター可読伝送媒体は、有線ネットワークまたは直接配線接続(direct-wired connection)のような有線媒体、そして音響、RF、赤外線、その他の無線媒体のような無線媒体を含む。前述の媒体のいずれかによる任意の組み合わせもまたコンピューター可読伝送媒体の範囲に含まれるものとする。
【0110】
コンピューター(1102)を含む本開示の多様な側面を実現する例示的な環境(1100)が示されており、コンピューター(1102)は、処理装置(1104)、システムメモリー(1106)、システムバス(1108)を含む。システムバス(1108)は、システムメモリー(1106)(これに限定されない)をはじめとするシステムコンポーネントを処理装置(1104)につなげる。処理装置(1104)は、多様な商用プロセッサーのうち任意のプロセッサーになり得る。デュエルプロセッサーとその他のマルチプロセッサーアーキテクチャもまた処理装置(1104)として利用されることができる。
【0111】
システムバス(1108)は、メモリーバス、周辺装置バス、そして多様な商用バスアーキテクチャの中から、任意のものを使用するローカルバスにさらに相互連結されることのできる複数の類型のバス構造のうちいずれかになり得る。システムメモリー(1106)は、読み取り専用メモリー(ROM)(1110)やランダムアクセスメモリー(RAM)(1112)を含む。基本的な入出力システム(BIOS)は、ROM、EPROM、EEPROM等の非揮発性メモリー(1110)に保存され、このBIOSは、起動中の時等にコンピューター(1102)の中の複数の構成要素間の情報のやりとりをサポートする基本的なルーティンを含む。RAM(1112)は、またデータをキャッシュするための静的RAM等の高速RAMを含むことができる。
【0112】
コンピューター(1102)においては、また、内蔵型ハードディスクドライブ(HDD)(1114)(例えば、EIDE、SATA)(この内蔵型ハードディスクドライブ(1114)はまた適切なシャシー(図示は省略)の中で外付け型の用途で構成されることができる)、磁気フロッピーディスクドライブ(FDD)(1116)(例えば、移動式ディスケット(1118)から読み取ったりそれに書き込むためのものである)及び光ディスクドライブ(1120)(例えば、CD-ROMディスク(1122)を読み取ったり、DVD等のその他の高容量光媒体から読み取ったり、それに書き込むためのものである)を含む。ハードディスクドライブ(1114)、磁気ディスクドライブ(1116)及び光ディスクドライブ(1120)は、それぞれハードディスクドライブインターフェース(1124)、磁気ディスクドライブインターフェース(1126)及び光ドライブインターフェース(1128)によってシステムバス(1108)に繋がることができる。外付け型ドライブの実装のためのインターフェース(1124)は、例えば、USB(Universal Serial Bus)やIEEE1394インターフェース技術のうち、少なくとも1つまたはその両方を含む。
【0113】
これらのドライブ及びこれらに係るコンピューター可読媒体は、データ、データ構造、コンピューターで実行可能な命令、その他等々の非揮発性保存を提供する。コンピューター(1102)の場合、ドライブ及び媒体は、任意のデータを適切なデジタル形式に保存することに対応する。前述におけるコンピューター可読保存媒体に係る説明が、HDD、移動式磁気ディスク及びCDまたはDVD等の移動式光媒体について触れているが、当業者ならジップドライブ(zip drive)、磁気カセット、フラッシュメモリーカード、カートリッジ、その他等々のコンピューターにより読み取り可能な他の類型の保存媒体もまた例示的な運営環境で使われることができ、さらに、このような媒体のうち任意のある媒体が、本開示の方法を実行するためのコンピューターで実行可能な命令を含むことができることをよく理解できるだろう。
【0114】
運営システム(1130)、1つ以上のアプリケーションプログラム(1132)、その他のプログラムモジュール(1134)及びプログラムデータ(1136)をはじめとする多数のプログラムモジュールが、ドライブ及びRAM(1112)に保存されることができる。運営システム、アプリケーション、モジュール及び/またはデータの全部またはその一部分がまたRAM(1112)にキャッシュされることができる。本開示が商業的に利用可能な様々な運営システムまたは複数の運営システムの組み合わせにより実装されることができることをよく理解できるだろう。
【0115】
ユーザーは、1つ以上の有線・無線の入力装置、例えば、キーボード(1138)及びマウス(1140)等のポインティング装置を通じてコンピューター(1102)に命令及び情報を入力することができる。その他の入力装置(図示は省略)としてはマイク、IRリモコン、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン、その他などがあり得る。これら及びその他の入力装置が、よくシステムバス(1108)に繋がっている入力装置インターフェース(1142)を通じて処理装置(1104)に繋がることがあるが、並列ポート、IEEE1394直列ポート、ゲームポート、USBポート、IRインターフェース、その他等々のその他のインターフェースによって繋がることができる。
【0116】
モニター(1144)または他の類型のディスプレイ装置も、ビデオアダプター(1146)等のインターフェースを通じてシステムバス(1108)に繋がる。モニター(1144)に加えて、コンピューターは一般的にスピーカー、プリンター、その他等々のその他の周辺出力装置(図示は省略)を含む。
【0117】
コンピューター(1102)は、有線及び/または無線通信による(複数の)遠隔コンピューター(1148)等の1つ以上の遠隔コンピューターへの論理的接続を利用し、ネットワーク化された環境で動作することができる。(複数の)遠隔コンピューター(1148)は、ワークステーション、サーバーコンピューター、ルーター、パーソナルコンピューター、携帯用コンピューター、マイクロプロセッサー基盤の娯楽機器、ピア装置またはその他の通常のネットワークノードになることができ、一般的にコンピューター(1102)について述べられた構成要素のうち、多数またはその全部を含むが、簡略化するために、メモリー保存装置(1150)のみ図示されている。図示されている論理的接続は、近距離通信網(LAN)(1152)及び/または、より大きいネットワーク、例えば、遠距離通信網(WAN)(1154)における有線・無線の接続を含む。このようなLAN及びWANのネットワーキング環境は、オフィスや会社では一般的なもので、イントラネット等の全社的コンピューターネットワーク(enterprise-wide computer network)を容易にし、これらはすべて全世界のコンピューターネットワーク、例えば、インターネットに繋がることができる。
【0118】
LANネットワーキング環境で使われるとき、コンピューター(1102)は、有線及び/または無線通信ネットワークインターフェース、または、アダプター(1156)を通じてローカルネットワーク(1152)に繋がる。アダプター(1156)は、LAN(1152)への有線または無線通信を容易にすることができ、このLAN(1152)は、また無線アダプター(1156)と通信するためにそれに設置されている無線アクセスポイントを含む。WANネットワーキング環境で使われるとき、コンピューター(1102)は、モデム(1158)を含むことができたり、WAN(1154)上の通信サーバーに繋がったり、またはインターネットを介する等、WAN(1154)を介して通信を設定するその他の手段を持つ。内蔵型又は外付け型、そして、有線または無線装置になり得るモデム(1158)は、直列ポートインターフェース(1142)を通じてシステムバス(1108)に繋がる。ネットワーク化された環境において、コンピューター(1102)について説明されたプログラムモジュールまたはその一部分が、遠隔メモリー/保存装置(1150)に保存されることができる。図示されたネットワーク接続が例示的なものであり、複数のコンピューター間で通信リンクを設定する他の手段が使われることができるということは容易に理解できることである。
【0119】
コンピューター(1102)は、無線通信で配置されて動作する任意の無線装置またはユニット、例えば、プリンター、スキャナー、デスクトップ及び/または携帯用コンピューター、PDA(portable data assistant)、通信衛星、無線で検出可能なタグに係る任意の装備または場所及、及び電話と通信する動作をする。これは、少なくともWi-Fi及びブルートゥース無線技術を含む。従って、通信は、従来のネットワークのように予め定義された構造であったり、単純に少なくとも2つの装置の間でのアドホック通信(ad hoc communication)になり得る。
【0120】
Wi-Fi(Wireless Fidelity)は、有線で繋がっていなくても、インターネット等への接続を可能にする。Wi-Fiは、このような装置、例えば、コンピューターが室内及び室外で、つまり基地局の通話圏内のどこからでもデータを送受信できるようにするセル電話のような無線技術である。Wi-Fiネットワークは、安全で信頼性があり、高速である無線接続を提供するためにIEEE802.11(a、b、g、その他)という無線技術を使う。コンピューターを互いに、インターネット及び有線ネットワーク(IEEE802.3またはイーサネットを使う)に接続するためにWi-Fiが使われることができる。Wi-Fiネットワークは、非認可2.4や5GHzの無線帯域において、例えば、11Mbps(802.11a)または54Mbps(802.11b)のデータレートで動作したり、両帯域(デュエル帯域)を含む製品において動作することができる。
【0121】
本開示の技術分野における通常の知識を持つ者は情報及び信号が任意の多様な異なる技術及び手法を利用して示されることができることを理解できる。例えば、上記の説明において参照できるデータ、指示、命令、情報、信号、ビット、シンボル及びチップは、電圧、電流、電磁気派、磁場等または粒子、光学場等または粒子、またはこれらの任意の組み合わせによって示されることができる。
【0122】
本開示の技術分野において通常の知識を持つ者は、ここに開示された実施例に係る説明で取り挙げられた多様な例示的な論理ブロック、モジュール、プロセッサー、手段、回路、アルゴリズム段階が電子ハードウェア、(利便性のために、ここでは「ソフトウェア」と称される)多様な形のプログラムまたは設計コード、またはこれらすべての結合により実装されることができることを理解できるだろう。ハードウェア及びソフトウェアのこのような相互互換性を明確に説明するために、多様な例示的なコンポーネント、ブロック、モジュール、回路、及び段階がこれらの機能に着目して上記で一般的に説明された。このような機能がハードウェアやソフトウェアで実装されるかどうかは、特定のアプリケーションおよび全体システムに対して付与される設計上の制限によって決まる。本開示の技術分野において通常の知識を持つ者は、個々の特定のアプリケーションについて多様な手法で説明された機能を実現することができるが、このような実現の決定は、本開示の範囲を逸脱するものと解釈されてはならない。
【0123】
ここに示された多様な実施例は、方法、装置、または標準プログラミング及び/またはエンジニアリング技術を使った製造物品(article)によって実現できる。用語「製造物品」は、任意のコンピューターで可読な装置からアクセス可能なコンピュータープログラム、キャリアー、または媒体(media)を含む。例えば、コンピューターで可読保存媒体は、磁気保存装置(例えば、ハードディスク、フロッピーディスク、磁気ストリップ等)、光学ディスク(例えば、CD、DVD等)、スマートカード及びフラッシュメモリー装置(例えば、EEPROM、カード、スティック、キードライブ等)を含むが、これらに限定されるものではない。また、ここに示されている多様な保存媒体は、情報を保存するための1つ以上の装置及び/または他の機械可読媒体を含む。
【0124】
示されたプロセスにおける複数の段階の特定の順番または階層構造は、例示的なアプローチの一例であることを理解すべきである。設計上の優先順位に基づき、本開示の範囲内で、プロセスにおける段階の特定の順番または階層構造が再配列されることができることを理解すべきである。添付の方法請求項は、サンプルとしての順番で、多様な段階のエレメントを提供するが、示された特定の順番または階層構造に限定されることを意味するわけではない。
【0125】
示された実施例に関する説明は、任意の本開示の技術分野において通常の知識を持つ者が、本開示を利用したり、または実施できるように提供される。このような実施例に対する多様な変形は、本開示の技術分野において通常の知識を持つ者には明確に理解できるものであり、ここに定義された一般的な原理は、本開示の範囲を逸脱することなく他の実施例に適用されることができる。従って、本開示はここに示す実施例によって限定されるものではなく、ここに示す原理及び新規な特徴と一貫する最広義の範囲で解釈されるべきである。
【0126】
本開示は、以下に記載された、政府の支援の下で取り組む課題の一環として行われたものである。
課題固有番号:20018758
部署名:産業通商資源部
研究管理専門機関:韓国産業技術評価管理院
研究事業名:知識サービス産業技術開発事業-サービス核心技術開発
研究課題名:中小中堅製造産業におけるKESGに基づく経営成果管理と生産プロセス最適化サービス技術開発
寄与率:100%
主管機関:株式会社ビーアイマトリックス
研究期間:2022年4月1日~2024年12月31日