コリジョン (コリジョン) とは | 意味や読み方など丁寧でわかりやすい用語解説
コリジョン (コリジョン) の読み方
日本語表記
衝突 (ショウトツ)
英語表記
Collision (コリジョン)
コリジョン (コリジョン) の意味や用語解説
コリジョンとは、ITの分野において、主にネットワークやデータベースなどのデータ処理において、複数のデータが同じ場所に同時にアクセスしようとして発生する衝突現象のことである。日本語では「衝突」と訳される。 コリジョンは、データ伝送の効率を低下させたり、データ損失の原因になったりするため、システム設計において考慮すべき重要な問題となる。特に、複数の端末が同時にデータを送信する可能性があるネットワーク環境や、複数のトランザクションが同時に同じデータにアクセスする可能性があるデータベース環境では、コリジョンを回避するための対策が必要となる。 ネットワークにおけるコリジョンは、主にイーサネットなどの共有メディア型のネットワークにおいて発生する。イーサネットでは、複数の端末が同じケーブルを共有してデータを送信するため、複数の端末が同時にデータを送信しようとすると、データが衝突して破損する可能性がある。この現象をコリジョンと呼ぶ。コリジョンが発生すると、送信されたデータは破棄され、送信端末はランダムな時間待機した後、再度データを送信する必要がある。 コリジョンを回避するための技術として、CSMA/CD(Carrier Sense Multiple Access with Collision Detection)方式が広く用いられている。CSMA/CD方式では、各端末はデータを送信する前に、ケーブル上に他の端末がデータを送信していないかを確認する(キャリアセンス)。もし他の端末がデータを送信していれば、送信を待機する。もし誰も送信していなければ、データを送信する。ただし、複数の端末が同時にキャリアセンスを行い、誰も送信していないと判断して同時にデータを送信を開始した場合、コリジョンが発生する可能性がある。コリジョンが発生した場合、各端末はコリジョンを検出し(コリジョンディテクション)、データの送信を中止し、ジャム信号と呼ばれる特殊な信号を送信して、他の端末にもコリジョンの発生を知らせる。その後、各端末はランダムな時間待機した後、再度データを送信する。 近年では、スイッチングハブや全二重通信の普及により、コリジョンドメインが縮小され、コリジョンの発生頻度は大幅に減少している。スイッチングハブは、各ポートに接続された端末からのデータのみを、宛先ポートに転送するため、コリジョンドメインを各ポートごとに分割することができる。また、全二重通信では、端末が同時に送受信を行うことができるため、コリジョンの発生を原理的に回避することができる。 データベースにおけるコリジョンは、複数のトランザクションが同時に同じデータにアクセスしようとした際に発生する。例えば、複数のユーザーが同時に同じ口座からお金を引き出そうとした場合、データベースシステムは、これらのトランザクションを適切に制御しないと、データの不整合が発生する可能性がある。 データベースにおけるコリジョンを回避するための技術として、トランザクション管理という概念が存在する。トランザクション管理では、ACID特性と呼ばれる、原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、永続性(Durability)を保証することで、データの整合性を維持する。 独立性(Isolation)は、複数のトランザクションが同時に実行された場合でも、それぞれのトランザクションが他のトランザクションの影響を受けないように制御する特性である。独立性を保証するために、ロックと呼ばれる仕組みが用いられる。ロックは、トランザクションがデータにアクセスする際に、他のトランザクションからのアクセスを制限する。ロックには、排他ロックと共有ロックの2種類がある。排他ロックは、トランザクションがデータを書き込む場合に取得するロックで、他のトランザクションからの読み込みも書き込みも禁止する。共有ロックは、トランザクションがデータを読み込む場合に取得するロックで、他のトランザクションからの書き込みは禁止するが、読み込みは許可する。 ロックを用いることで、データベースシステムは、複数のトランザクションが同時に同じデータにアクセスした場合でも、データの整合性を維持することができる。ただし、ロックの取得順序によっては、デッドロックと呼ばれる状態が発生する可能性がある。デッドロックとは、複数のトランザクションがお互いにロックの解除を待ち続けて、処理が進まなくなる状態のことである。デッドロックを回避するためには、ロックの取得順序を適切に管理したり、タイムアウトを設定して、一定時間経過後にロックを強制的に解除したりするなどの対策が必要となる。 コリジョンは、ネットワークやデータベースなどの様々な分野で発生する可能性のある問題であり、システム設計において考慮すべき重要な要素である。コリジョンを回避するための技術は、システムの性能や信頼性を向上させるために不可欠である。