(57)【要約】  本出願は、ランダム文字列を生成する方法および装置を開示する。方法は、データベースのsequence変数の値を取得するステップであって、sequence変数の値は予め定められた基本数字セットの基本数字を含む数列であり、現在取得されたsequence変数の値は他の時に取得されたsequence変数の値と異なるステップと、文字セットに含まれる文字と基本数字セットに含まれる基本数字との間の所定の一対一マッピング関係に従って数列を生成されたランダム文字列としての文字列にマッピングするステップとを含む。本出願によると、sequence変数の異なる値が都度取得され、これに対応して、一対一マッピング関係に従って異なるランダム文字列が都度生成される。そのため、文字列比較操作を何度も実行する必要がなく、一意ランダム文字列の生成効率が改善される。
2019504426.tif 000002
【特許請求の範囲】
【請求項１】
ランダム文字列を生成する方法であって、
データベースのsequence変数の値を取得するステップであって、前記sequence変数の値は予め定められた基本数字セットの基本数字を含む数列であり、現在取得されたsequence変数の値は他の時に取得されたsequence変数の値と異なるステップと、
文字セットに含まれる文字と前記基本数字セットに含まれる前記基本数字との間の所定の一対一マッピング関係に従って前記数列を文字列にマッピングし、生成されたランダム文字列とするステップと、
を含む方法。
【請求項２】
前記データベースのsequence変数の値を取得するステップは、
ランダム文字列の生成要求を受信するステップと、
前記生成要求の種類に従って、前記データベースの少なくとも１つのsequence変数から、前記種類に対応する所定のsequence変数を決定するステップと、
前記種類に対応する前記sequence変数の値を取得するステップであって、前記現在取得されたsequence変数の値は他の時に取得された前記種類に対応するsequence変数の値と異なる、ステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記文字セットに含まれる文字の数がＮである場合、前記予め定められた基本数字セットはＮ進法に対応し、かつ、０以上Ｎ−１以下の整数である基本数字を含む基本数字セットであって、Ｎは２より小さくない整数であり、
データベースのsequence変数の値を取得するステップであって、前記sequence変数の値は予め定められた基本数字セットの基本数字を含む数列であるステップは、
前記データベースの前記sequence変数の値を取得するステップと、
前記取得したsequence変数の値がＮ進数の数でないとの判定に対応して、前記sequence変数の値をＮ進数の数に変換するステップであって、前記Ｎ進数の数は前記Ｎ進法に対応する基本数字セットの前記基本数字を含む数列であるステップと、
を含む、請求項１に記載の方法。
【請求項４】
前記数列を文字列にマッピングするステップは、
前記数列の各基本数字を、前記文字セットに含まれ、前記基本数字にマッピングされる文字に変換するステップと、
変換後の前記数列における前記変換された文字の順序に従って、前記文字を順に接続して文字列を形成するステップと、を含む、請求項１に記載の方法。
【請求項５】
前記sequence変数の値を取得するステップは、
前記sequence変数の自動増加を許可し、その後に前記sequence変数の値を取得する命令を用いてsequence変数の値を取得するステップを含む、請求項１−３のいずれか一項に記載の方法。
【請求項６】
ランダム文字列を生成する装置であって、
データベースのsequence変数の値を取得するよう構成された取得モジュールであって、sequence変数の値は予め定められた基本数字セットの基本数字を含む数列であり、現在取得されたsequence変数の値は他の時に取得されたsequence変数の値と異なる、取得モジュールと、
文字セットに含まれる文字と前記基本数字セットに含まれる前記基本数字との間の所定の一対一マッピング関係に従って前記数列を文字列にマッピングし、生成されたランダム文字列とするよう構成された生成モジュールと、を備える装置。
【請求項７】
前記取得モジュールは、ランダム文字列の生成要求を受信し、前記生成要求の種類に従って、前記データベースの少なくとも１つのsequence変数から前記種類に対応する所定のsequence変数を決定し、前記種類に対応するsequence変数の値を取得し、現在取得された前記sequence変数の値は、他の時に取得された前記種類に対応するsequence変数の値と異なる、請求項６に記載の装置。
【請求項８】
前記文字セットに含まれる文字の数がＮである場合、前記予め定められた基本数字セットは、Ｎ進法に対応し、かつ、０以上Ｎ−１以下の基本数字を含む基本数字セットであって、Ｎは２よりも小さくない整数であり、
前記取得モジュールは、前記データベースの前記sequence変数の値を取得し、取得されたsequence変数の値がＮ進数でないと判定された場合、前記sequence変数の値をＮ進数の数に変換し、前記Ｎ進数の数は、Ｎ進法に対応する基本数字セットの基本数字を含む数列であるよう構成される、請求項６に記載の装置。
【請求項９】
前記生成モジュールは、前記数列の各基本数字を、前記文字セットに含まれ、前記基本数字にマッピングされる文字に変換し、前記変換後の数列における前記変換された文字の順序に従って、前記文字を順に接続して文字列を形成するよう構成される、請求項６に記載の装置。
【請求項１０】
前記取得モジュールは、前記sequence変数の自動増加を許可し、その後、前記sequence変数の値を取得する命令を用いて前記sequence変数の値を取得するよう構成される、請求項６ないし８のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１５年１２月７日に出願された、「Method and Apparatus for Generating Random Character String（ランダム文字列を生成する方法および装置）」という名称の中国出願第201510892216.8号の優先権を主張するものであり、その全体は参照によりここに援用される。
【０００２】
本出願は、電子的デジタルデータ処理分野に関し、特に、ランダム文字列を生成する方法および装置および方法に関する。
【背景技術】
【０００３】
ランダム文字列は多くのサービスで広く用いられてきている。ランダム文字列を広く用いるサービスは、例えば、暗号処理を含むサービス、および、大量のサービスデータを分類する必要のあるサービス等であってよい。
【０００４】
現時点で、サービスデータ間の混乱を防止するため、サービスに用いられるランダム文字列がサービスの観点から一意であること、具体的には、ランダム文字列が互いに異なっていることが一般的に要求される。
【０００５】
既存の技術によると、ランダム文字列を生成するために、ランダムアルゴリズムが典型的に用いられる。さらに、現在生成されたランダム文字列は、以前に生成されたランダム文字列と比較される。これらが同じであれば、現在生成されたランダム文字列は破棄され、さらにランダム文字列が生成される。こうすると、生成され保存されたそれぞれのランダム文字列はすべてのランダム文字列のなかで一意である（説明を簡単にするため、ランダム文字列を一意ランダム文字列ともいう）。
【０００６】
しかし、生成され保存されたランダム文字列が多数あるとき、ランダム文字列を生成したときのランダム文字列が同一にならないようにするための文字列比較動作は、何度も実行されなければならない。したがって、一意ランダム文字列を生成するためのこの方法は、非常に効率が低い。
【発明の概要】
【０００７】
本出願の実施形態は、一意ランダム文字列を生成するための従来技術の方法は非常に効率が低いという問題を解決する、ランダム文字列を生成する方法および装置を提供する。
【０００８】
本出願の実施形態によると、ランダム文字列を生成する方法は、データベースの数列(sequence)変数の値を取得するステップであって、sequence変数の値は予め定められた基本数字セットの基本数字を含む数列であり、現在取得されたsequence変数の値は他の時に取得されたsequence変数の値と異なるステップと、文字セットに含まれる文字と基本数字セットに含まれる基本数字との間の所定の一対一マッピング関係に従って数列を文字列にマッピングし、生成されたランダム文字列とするステップと、を含む。
【０００９】
本出願の実施形態によると、ランダム文字列を生成する装置は、データベースのsequence変数の値を取得するよう構成された取得モジュールであって、sequence変数の値は予め定められた基本数字セットの基本数字を含む数列であり、現在取得されたsequence変数の値は他の時に取得されたsequence変数の値と異なる、取得モジュールと、文字セットに含まれる文字と基本数字セットに含まれる基本数字との間の所定の一対一マッピング関係に従って数列を文字列にマッピングし、生成されたランダム文字列とする生成モジュールと、を含む。
【００１０】
本出願の実施形態により提供される少なくとも１つの技術的解決手段により、異なる値のsequence変数が都度取得され、これに対応して、一対一マッピング関係に従って異なるランダム文字列が都度生成される。そのため、文字列比較動作を何度も実行する必要がなく、一意ランダム文字列の生成の効率性が改善される。
【図面の簡単な説明】
【００１１】
明細書で説明される添付図面は、本出願をより理解するために用いられ、本出願の一部を構成する。本出願の実施例およびその説明は、本出願の説明のために用いられ、本出願の不適切な限定を構成しない。添付図面において、
【００１２】
【図１】本出願の実施形態に従った、ランダム文字列を生成する方法の処理を説明する図である。
【００１３】
【図２】本出願の実施形態に従った、ランダム文字列を生成する方法の実際のアプリケーションシナリオにおける実装処理を説明する図である。
【００１４】
【図３】本出願の実施形態に従った、図２の処理を実装するためのシステムの模式図である。
【００１５】
【図４】本出願の実施形態に従った、ランダム文字列を生成する装置の模式図である。
【発明を実施するための形態】
【００１６】
本出願の目的、技術的解決手段、および効果をより明確にするために、本出願の特定の実施形態および添付図面を参照して、本出願の技術的解決手段が、以下に明確かつ完全に説明される。説明される実施形態が、本出願の実施形態の全部ではなく一部に過ぎないことは明らかである。本出願の実施形態に基づいて創造的努力なく当業者が獲得可能な他のすべての実施形態は、本出願の範囲に含まれるべきものである。
【００１７】
背景技術に記載したように、既存技術に従って一意ランダム文字列を生成するために、後検方式（すなわち、まずランダム文字列を生成し、後でランダム文字列が一意かを検査する）が用いられ、生成され保存されたランダム文字列が一意であることを確保する。ある時に生成されたランダム文字列は、そのランダム文字列が保存されたランダム文字列のいずれかと同じであれば、破棄される。この場合、効率は非常に低く、さらに、ランダム文字列を生成するために資源が浪費される。
【００１８】
上記問題を解決するために、本出願の実施形態では、ランダム文字列を生成する処理の始まりにおいて、生成されるランダム文字列が一意となるように対策を講じる。こうすると、ランダム文字列が生成された後に検査を行う必要がなく、効率が向上する。さらに、ランダム文字列を生成するために資源が浪費されることがない。以下に、詳細な説明が提供される。
【００１９】
図１は、本出願の実施形態に従った、ランダム文字列を生成する方法の処理を説明する。この処理の実行主体は、端末またはサーバを含んでよい。端末は、パーソナルコンピュータ、携帯電話、タブレットコンピュータ、スマートウォッチ、車載型携帯ステーション等を含むがこれに限定されない。サーバは、パーソナルコンピュータ、大規模または中規模コンピュータ、コンピュータクラスタ等を含むがこれに限定されない。実行主体は、本出願を限定するものではない。説明を簡単にするため、本出願の実施形態は、実行主体が例えばサーバであるものとしてすべて説明される。
【００２０】
本出願の実施形態において、図１の処理は、一意ランダム文字列を生成する処理である。実際のアプリケーションでは、互いに異なる複数のランダム文字列を取得するため、処理は何回も実行される。処理は一点環境で実行されてよく、分散環境で実行されてもよい。処理の実行環境は、本出願の実施形態を限定しない。
【００２１】
一例では、処理は以下のステップを含んでよい：
【００２２】
Ｓ１０１：データベースのsequence変数の値を取得するステップであって、sequence変数の値は予め定められた基本数字セットにおける基本数字を含む数列であり、現在取得されたsequence変数の値は他の時に取得されたsequence変数の値と異なる。
【００２３】
本出願の実施形態において、sequence変数は、データベースに定義されたいかなるsequence変数であってもよい。sequence変数は、ランダム文字列を生成する機能を実現するために定義されてよく、他の機能を実現するために元々定義されていてもよく、これは本出願の実施形態によって限定されない。データベースは、Oracle（登録商標）、DB2、PostgreSQL等を含むがこれに限られない。
【００２４】
sequence変数は、一般的には、データベースのプライマリキーとして用いられてよい。sequence変数の値を取得するためにデータベースにより提供される特定の命令が用いられた時に、sequence変数の取得された値は都度異なってよい。特定の命令は、所定の自動増加ステップに従ってsequence変数の自動増加を許可し、そしてその変数を取得することを許可するために用いられる命令、例えばNextVal命令であってよい。
【００２５】
本出願の実施形態において、現在取得されたsequence変数の値に従って生成されるランダム文字列は、sequence変数の一意な値が都度取得されることに基づいて、一意であることが保証されてよい。
【００２６】
上記命令はデータベースにおいて既に実現された機能部分なので、本出願の解決手段を実装するときに、ステップＳ１０１においてsequence変数の異なる値が都度取得されることを保証するために自ら追加機能モジュールを開発する必要がなく、こうして本出願の解決手段を実装するコストが削減される。
【００２７】
本出願の実施形態において、sequence変数は数値変数である。数値変数の値は、10進数、2進数、8進数、または16進数で表現されてよい。"seq"という名称のsequence変数が、例として説明に使用される。
【００２８】
10進法において、seq=123とすると、seqの値は、10進法に対応する基本数字セット（含まれる基本数字は10進数の数字の0から9である）に基づいて10進数の1、2、および3によって形成される"123"という数列で表現されて具体的には10進数の123となり、2進法においては、seqの値は、2進法に対応する基本数字セット（含まれる基本数字は2進数の数字の0および1である）に基づいて2進数の0および1によって形成される"01111011"という数列で表現されて具体的には2進数の01111011となり、同様に、seqの値は8進法または16進法に基づいて表現され、ここでは個別に説明しない。
【００２９】
上述したように、ステップＳ１０１における予め定められた基本数字セットは、予め定められた記数法に対応する基本数字セットであってよく、それに応じて、sequence変数の値は、基本数字セットからなる数列であってよい。
【００３０】
Ｓ１０２：文字セットに含まれる文字と基本数字セットに含まれる基本数字との間の所定の一対一マッピング関係に従って数列を文字列にマッピングし、生成されたランダム文字列とする。
【００３１】
本出願の実施形態において、文字セットに含まれる文字の数は、基本数字セットに含まれる基本数字の数と同じであってよく、文字は互いに異なっていてよく、基本数字は互いに異なっていてよい。こうすると、文字と基本数字との間で一対一マッピング関係が成功裏に設定可能となる。
【００３２】
文字セットおよび／または一対一マッピング関係は、ステップＳ１０１の実行の前に設定されてよく、または、ステップＳ１０１の実行の後に設定されてもよい。前者の場合、ステップＳ１０１が実行されたとき、sequence変数の値の決定の前に文字セットが決定される。文字セットとsequence変数の値に対応する基本数字セットとの間で一対一マッピング関係の設定を確実に成功させるため、sequence変数の値を表現するために用いられる基本数字セットは、文字セットに含まれる文字の数に従って決定されてよい（基本数字セットに含まれる基本数字の数は文字の数と同じとなる）。後者の場合、同様に、文字セットは、sequence変数の値を表現するために用いられる基本数字セットに含まれる基本数字の数に従って設定されてよい。
【００３３】
実際のアプリケーションで数列が文字列にマッピングされた後、さらに、所定のルールに従って、文字列の先頭、中間、または末尾に他の文字が挿入されてよく、挿入後の文字列が、生成されたランダム文字列として用いられる。こうした場合、数列からマッピングされた文字列は、生成されたランダム文字列の一部となる。挿入された他の文字は、生成されたランダム文字列の一意性に影響しないことに留意されたい。
【００３４】
本出願の実施形態において、数列のマッピングへの所定の文字セットの利用に加えて、所定の文字列セットが、ランダム文字列の生成のための数列のマッピングに同様に用いられてよい。こうした場合、ステップＳ１０２は、以下のステップに置き換えられる：文字列セットに含まれる文字列と基本数字セットに含まれる基本数字との間の所定の一対一マッピング関係に従って数列を文字列にマッピングし、生成されたランダム文字列とする。
【００３５】
上述の方法に従うと、sequence変数の異なる値が都度取得され、これに対応して、一対一マッピング関係に従って異なるランダム文字列が都度生成される。そのため、文字列比較動作を何度も実行する必要がなく、一意のランダム文字列の生成の効率が改善され、サーバのリソースが削減される。さらに、都度異なるsequence変数を取得するための特定の命令がデータベースによって提供されているため、本出願の解決手段の実装コストは比較的小さく、より多くの実用シナリオの実装に好都合である。
【００３６】
理解を容易にするため、図１のステップを以下にさらに詳述する。
【００３７】
本出願の実施形態において、生成されるランダム文字列の複雑さについて、異なるサービスが異なる要求を有している場合がある。例えば、あるサービスの要求は英字のみを含むランダム文字列の生成により満足され、他のサービスは、生成されたランダム文字列が、英字を含むのみならず、数字、句読点等といった他の種類の文字を含むことを要求することがある。
【００３８】
上述したような要求に従って、まず要求に合致する文字セットが設定され、次に図１の各ステップが実行される。こうした場合、設定された文字セットに従って、文字セットと一対一マッピング関係にある基本数字セットが決定され、ステップＳ１０１においてsequence変数の値が表現される。
【００３９】
生成されるランダム文字列の複雑さに特段の要求がない場合、まずsequence変数の値が取得され、次に、値を表現する基本数字セットに従って、基本数字セットと一対一マッピング関係にある文字セットが生成されてよい。
【００４０】
本出願の実施形態において、サーバは、ランダム文字列を、ただ１つのサービスのために生成してよく、複数のサービスのそれぞれのために生成してもよい。後者の場合、複数のサービスはすべてランダム文字列を取得する要求を有している。複数のサービスのそれぞれは、一般的にはそのサービスの範囲内で取得されたランダム文字列を用いるので、サーバは、それぞれのサービスに対し、そのサービスの範囲内で一意なランダム文字列を生成してよい。サーバにより生成されるすべてのランダム文字列が全体の中で一意であることを保証する必要はない。
【００４１】
後者の場合の分析に従うと、ステップＳ１０１における「データベースのsequence変数の値を取得するステップ」は、以下を含んでよい：ランダム文字列の生成要求を受信するステップ；生成要求の種類に従って、データベースの少なくとも１つのsequence変数から、種類に対応する所定のsequence変数を決定するステップ；種類に対応するsequence変数の値を取得するステップであって、現在取得されたsequence変数の値は他の時に取得されたその種類に対応するsequence変数の値と異なるステップ。
【００４２】
ランダム文字列の生成要求は、ランダム文字列を取得する必要のあるサービスから来てよく、異なるサービスは異なる種類の生成要求を有してよい。生成要求の各々の種類はsequence変数に対応してよく（対応関係は、予め設定されていてよく、生成要求を受信した後に設定されてもよい）、各々のsequence変数は異なる変数名を有してよい。その結果、sequence変数は変数名に従って区別することができる。
【００４３】
したがって、サーバは、異なるサービスに対して、異なるsequence変数に基づき、それぞれ対応するサービス範囲において一意なランダム文字列を生成することができる。こうすると、それぞれのsequence変数が関連づけられるサービスが過多となることを防止することができ、これによりsequence変数の管理が容易になる。
【００４４】
実際のアプリケーションでは、あるsequence変数は複数のサービスにより共有され、複数のサービスのためにランダム文字列を生成するために用いられてよく、こうしてデータベースのオーバーヘッドを低下させる。こうした場合、このsequence変数に基づいて生成されたすべてのランダム文字列は、複数のサービスの範囲において一意である。
【００４５】
さらに、サーバが複数のサービスのそれぞれためにランダム文字列を生成する場合、異なるサービスのために設定される文字セットも異なってよい。さらに、サービスに対応するsequence変数の値を取得した後に、サーバは、そのサービスのための文字セットに基づいてそのサービスのためのランダム文字列を生成してよい。
【００４６】
本出願の実施形態において、ステップＳ１０２における「数列を文字列にマッピングし、生成されたランダム文字列とするステップ」は、以下を含んでよい：数列の各基本数字を、文字セットに含まれ、基本数字にマッピングされる文字に変換するステップ；変換後の数列における変換された文字の順序に従って、文字を順に接続して文字列を形成するステップ。説明のため、上述のsequence変数であるseqが再び用いられる。
【００４７】
例えば、seqは数列"123"である。所定の文字セットにおいて、基本数字"1"にマッピングされた文字は'@'であり、基本数字"2"にマッピングされた文字は'#'であり、基本数字"3"にマッピングされた文字は'$'であるとする。これらの３つの文字は"@#$"となるよう順に接続可能であり、数列"123"は文字列"@#$"にマッピングされる。
【００４８】
本出願の実施形態において、文字セットが設定された後にsequence変数の値が取得される場合、変換後の値を表現するための基本数字セットが既定の文字セットと一対一マッピング関係を有するよう、値を異なる記数法に変換しなければならないことがある。
【００４９】
例えば、文字セットに含まれる文字の数がＮである場合、予め定められた基本数字セットはＮ進法に対応し、０以上Ｎ−１以下の整数である基本数字を含む基本数字セットであって、このときＮは２より小さくない整数である。このような場合、ステップＳ１０１における「データベースのsequence変数の値を取得するステップであって、sequence変数の値は予め定められた基本数字セットにおける基本数字を含む数列であるステップ」は、以下を含んでよい：データベースのsequence変数の値を取得するステップ；取得したsequence変数の値がＮ進数の数でないとの判定に対応して、sequence変数の値をＮ進数の数に変換するステップであって、Ｎ進数の数はＮ進法に対応する基本数字セットの基本数字を含む数列であるステップ。以下に例を通して説明が提供される。
【００５０】
例えば、所定の文字セットが｛'r','7','d','m','g','a','x','3'｝であって、８個の文字を含み（すなわちＮ＝８）、文字セットに含まれる文字と８進法に対応する基本数字セットに含まれる基本数字｛'0','1','2','3','4','5','6','7'｝との間の一対一マッピング関係が設定されているものとする。設定されている一対一マッピング関係は、｛('r','0');(‘7’,‘1’);(‘d’,‘2’);(‘m’,‘3’);(‘g’,‘4’);(‘a’,‘5’);(‘x’,‘6’);(‘3’,‘7’)｝と表現され、かっこ内の対のそれぞれはマッピング対を成し、マッピング対は、互いにマッピングされる文字セットに含まれる文字と基本数字セットに含まれる基本数字とを成す。
【００５１】
現在取得したsequence変数の値が11002であって、８進数ではなく１０進数であるとする。このとき、１０進数の11002は８進数の25372に変換されてよい。具体的には、sequence変数の値は、８進法に対応する基本数字セットに基づき、数列"25372"として表現される。さらに、数列"25372"は、文字セットおよび一対一マッピング関係に従って、現在生成されたランダム文字列として、文字列"dam3d"に変換されてよい。
【００５２】
本出願の実施形態において、ステップＳ１０１が実行されるたびに、sequence変数の自動増加を許可し、そしてsequence変数の値を獲得するための命令が用いられてよく、こうして都度sequence変数の異なる値が取得される。現在ほとんどのデータベースで、sequence変数の自動増加を許可し値を取得するために用いられる命令がNextVal命令であることは上述した。本出願の実施形態において命令の名称は限定されておらず、"NextVal"は命令の名称の例であることに留意されたい。
【００５３】
図１のステップをここまで詳述してきた。理解を容易にするため、本出願の実施形態に従ってランダム文字列を生成する方法の実装処理が、実際のアプリケーションシナリオにおける例とともに説明される。
【００５４】
データベースのsequence変数の値が初期設定では１０進数であり、所定の文字セットに含まれる文字の数がＮであり、文字セットは予め配列形式で形成され保存されているものとする。図２に示すように、処理は以下のステップを含んでよい。
【００５５】
Ｓ２０１：長さＮの配列を形成すること、Ｎは１０ではなく、配列はＮ個の異なる文字を含むとする。
【００５６】
上記の例における文字セットおよび一対一マッピング関係は、再び用いられる。配列は以下の命令を用いて形成される：
【００５７】
char[] digit = ｛‘r’，‘7’，‘d’，‘m’，‘g’，‘a’，‘x’，‘3’｝
【００５８】
Ｓ２０２：NextVal命令を用いてデータベースのsequence変数の値を取得すること。ここで、値は１０進数である。
【００５９】
取得されたsequence変数の値は１０進数の11002であるとする。
【００６０】
Ｓ２０３：取得されたsequence変数の値を１０進数からＮ進数に変換。
【００６１】
Ｎ＝８とすると、変換後のsequence変数の値は８進数の25372であり、対応する数列は"25372"である。
【００６２】
Ｎ＝１０の場合、ステップＳ２０３は実行する必要がないので、省略可能であることに留意されたい。
【００６３】
Ｓ２０４：配列に含まれる文字とＮ進法に対応する基本数字セットに含まれる基本数字との所定の一対一マッピング関係に従って、変換を経て獲得されたＮ進法に対応する数列をマッピングし、生成されたランダム文字列とする。
【００６４】
数列"25372"は文字列"dam3d"にマッピングされ、生成されたランダム文字列とされてよい。
【００６５】
さらに、本出願の実施形態は、図３に示すように、図２の処理を実装するためのシステムの模式図も提供する。
【００６６】
システムは、周辺と、サービス層とアルゴリズム層と、データベース層とを有する。それぞれの層の処理ロジックは、同一の機器（例えばサーバ）に実装されてよく、異なる機器に実装されてもよい。
【００６７】
図３において矢印を付した線分は、ランダム文字列を生成する処理の処理ロジックの実行シーケンスを示しており、矢印を付した線分の両端に接続されたブロックは処理のステップの説明を含んでいる。処理は主に、以下のステップを含む：
【００６８】
周辺機器がサービス層に、ランダム文字列の生成の要求を送信する；
【００６９】
生成要求に対応し、サービス層がNextVal命令を用いてデータベース層から生成要求の種類に対応する所定のsequence変数の値を取得し、その値はサービス層に返される；
【００７０】
サービス層がsequence変数の値をアルゴリズム層に転送する；
【００７１】
所定の文字セットに基づいて、アルゴリズム層がsequence変数の値に対応する数列をランダム文字列にマッピングし、ランダム文字列をサービス層に返す；
【００７２】
サービス層が生成されたランダム文字列および他の関連情報をデータベースに送信し、これらのデータはデータベースに書き込まれ保存される；
【００７３】
サービス層が生成されたランダム文字列を周辺機器に返す；
【００７４】
周辺機器が生成されたランダム文字列を取得し、この時点で処理が終了する。
【００７５】
図３は、例を通して説明されるように、本出願の実施形態に従った方法を実装するために用いることのできるシステムの模式図である。実際のアプリケーションでは、方法を実装するための、上述のシステムとは異なる構成を有する他のシステムもあり得る。方法を実装するためのシステムの構成は、本出願の実施形態に限定されない。
【００７６】
実際のアプリケーションでは、データベースのsequence変数に加えて、本出願に従った解決手段を実装するためのsequence変数を置き換えるために他の所定の変数が用いられてもよい。例えば、他の所定の変数は、システム時間のミリ秒の数を記録する変数、ランダム文字列の生成の定義および維持のために特に用いられる変数等であってよい。
【００７７】
本出願に従った解決手段の実装に他の所定の変数が用いられる場合、sequence変数の値が取得される度に、次回取得されるsequence変数の値が他の時に取得されるsequence変数の値と異なるように、sequence変数の修正操作を実行する必要があり得ることに留意されたい。異なる所定の変数では、修正操作を実装するコストは異なり得る。実際のアプリケーションでは、用いられる所定の変数が、本出願に従った解決手段の実装のために選択されてよい。
【００７８】
本出願の実施形態に従ったランダム文字列を生成する方法が上記で説明された。同様の考え方に基づいて、図４に示すように、本出願の実施形態は、対応するランダム文字列生成装置をさらに提供する。
【００７９】
図４は、本出願の実施形態に従った、ランダム文字列生成装置の模式図であって、以下を含む：
【００８０】
データベースのsequence変数の値を取得するよう構成された取得モジュール４０１であって、sequence変数の値は予め定められた基本数字セットの基本数字を含む数列であり、現在取得されたsequence変数の値は他の時に取得されたsequence変数の値と異なる取得モジュールと、
【００８１】
文字セットに含まれる文字と基本数字セットに含まれる基本数字との間の所定の一対一マッピング関係に従って数列を文字列にマッピングし、生成されたランダム文字列とするよう構成された生成モジュール４０２。
【００８２】
例えば、取得モジュール４０１は、以下の処理を実行するよう構成されてよい：ランダム文字列の生成要求を受信し；生成要求の種類に従って、データベースの少なくとも１つのsequence変数から種類に対応する所定のsequence変数を決定し、種類に対応するsequence変数の値を取得し、現在取得されたsequence変数の値は、他の時に取得された種類に対応するsequence変数の値と異なる。
【００８３】
文字セットに含まれる文字の数がＮであるとき、予め定められた基本数字セットは、Ｎ進法に対応し、０以上Ｎ−１以下の整数である基本数字を含み、Ｎは２よりも小さくない整数である。
【００８４】
例えば、取得モジュール４０１は、以下の処理を実行するよう構成されてよい：データベースのsequence変数の値を取得し；取得したsequence変数の値がＮ進数の数でないとの判定に応じて、sequence変数の値をＮ進数の数に変換し、このＮ進数の数はＮ進法に対応する基本数字セットの基本数字を含む数列である。
【００８５】
例えば、生成モジュールは、数列の各基本数字を、文字セットに含まれ、基本数字にマッピングされる文字に変換してよく；変換後の数列における変換された文字の順序に従って、文字を順に接続して文字列を形成してよい。
【００８６】
例えば、取得モジュールは、sequence変数の自動増加を許可してその値を取得する命令を用いて、sequence変数の値を取得するよう構成されてよい。
【００８７】
実際のアプリケーションでは、指定された変数は、指定されたデータベースのsequence関数であってよく、システム時計のミリ秒の数を記録する変数といったその他の特定の変数であってもよい。
【００８８】
例えば、図４に示す装置は端末またはサーバで処理されてよい。
【００８９】
当業者は、本発明の実施形態が方法、システム、またはコンピュータプログラム製品として提供可能であることを理解するだろう。したがって、本発明は完全なハードウェア実施形態、完全なソフトウェア実施形態、またはソフトウェアとハードウェアとが結合した実施形態として実装可能である。さらに、本発明は、コンピュータが利用可能なコードが記録された１以上のコンピュータ利用可能記録メディア（磁気ディスクメモリ、ＣＤ−ＲＯＭ、光メモリ等を含むがこれに限らない）に実装されるコンピュータプログラム製品の形式で実装可能である。
【００９０】
本発明は、本発明の実施形態に従った方法、装置（システム)、およびコンピュータプログラム製品の、フローチャートおよび／またはブロック図を参照して説明される。コンピュータプログラム命令は、フローチャートおよび／またはブロック図における各処理および／またはブロック、および、フローチャートおよび／またはブロック図における処理および／またはブロックの組み合わせを実装するために用いられてよい。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みコンピュータ、または他のプログラム可能なデータ処理装置のプロセッサを装置として生成するために提供され、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサにより実行される命令は、フローチャートにおける１以上の処理および／またはブロック図における１以上のブロックの特定の機能を実装するための装置を生成する。
【００９１】
コンピュータまたは他のプログラム可能なデータ処理装置を所定の方法で動作させるよう命令するこれらのコンピュータプログラム命令は、コンピュータ可読メモリに保存され、コンピュータ可読メモリに保存された命令は命令装置に含まれる製品を生成する。命令装置は、フローチャートにおける１以上の処理および／またはブロック図における１以上のブロックの特定の機能を実装する。
【００９２】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置に読み込まれ、一連の動作ステップがコンピュータまたは他のプログラム可能なデータ処理装置で実行され、そうしてコンピュータに実装された処理が生成される。したがって、コンピュータまたは他のプログラム可能な装置により実行される命令は、フローチャートにおける１以上の処理および／またはブロック図における１以上のブロックの特定の機能を実装するためのステップを提供する。
【００９３】
典型的な構成では、コンピュータ装置は、１以上のプロセッサ（ＣＰＵ）、入力／出力インタフェース、ネットワークインタフェース、およびメモリを含む。
【００９４】
メモリは、揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、および／または不揮発メモリ、例えば読み出し専用メモリ（ＲＯＭ）またはフラッシュＲＡＭといった、コンピュータ可読媒体を含む。
【００９５】
コンピュータ可読媒体は、永続的、揮発性、可搬、および不可搬媒体を含み、あらゆる方法または技術を用いて情報記憶域とすることができる。情報は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータであってよい。コンピュータの記憶媒体の例は、相変化ＲＡＭ（ＰＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、他の形式のランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）、ＤＶＤ（Digital Versatile Disc）または他の光メモリ、カセット、カセットおよびディスクメモリまたは他の磁気メモリ装置または他の非伝送メディアであって、コンピュータ装置にアクセス可能に情報を保存するための用いることのできるものを含むが、これに限られない。ここでの定義に従って、コンピュータ可読媒体は、変調されたデータ信号および搬送波といった一時的媒体を含まない。
【００９６】
「含む」「有する」または他のこれら変形語は非限定的な包括を包含することを意図するものであり、一連の要素を有する処理、方法、製品または装置がこれらの要素を有するのみならず、明示的に列挙されていない他の要素も有し、または、処理、方法、製品または装置に備わる要素をさらに有することに、さらに留意されたい。更なる限定がない場合、「１つの……を有する」との記載により定義される要素は、定義された要素を有する処理、方法、製品または装置において、類似する付加的な要素を除外するものではない。
【００９７】
上述した本出願の実施形態は単なる例であり、本出願を限定するために用いられるものではない。当業者は、本出願を様々な方法で修正し変更することができる。本出願の精神および原則の範囲内におけるいかなる修正、同等物の置換、または改良も、本出願の請求項の範囲に含まれる。
【図１】
2019504426.tif 000003
【図２】
2019504426.tif 000004
【図３】
2019504426.tif 000005
【図４】
2019504426.tif 000006
【国際調査報告】
2019504426.tif 000007
2019504426.tif 000008
2019504426.tif 000009
2019504426.tif 000010