世の中にはさまざまなリレーショナルデータベース管理システム(RDBMS)があります。 Microsoft Access、Sybase、MySQLなどは聞いたことがあると思いますが、最も人気があり広く使われているのは、OracleとMS SQL Serverです。 この2つのプラットフォームには多くの共通点がありますが、重要な違いもいくつかあります。
言語
2つのRDBMSの最も明白な違いは、使用する言語でしょう。 どちらのシステムも Structured Query Language (SQL) を使用していますが、MS SQL Server では Transact SQL (T-SQL) を使用しています。これは、Sybase によって開発され、Microsoft によって使用されている SQL の拡張機能です。 一方、OracleはPL/SQL(Procedural Language/SQL)を使用しています。 この2つの言語は、SQLの異なる「フレーバー」または「方言」であり、どちらの言語も異なる構文と機能を持っています。 この2つの言語の主な違いは、変数、ストアドプロシージャ、組み込み関数の扱い方です。 OracleのPL/SQLでは、プロシージャをパッケージにまとめることができますが、これはMS SQL Serverではできません。
トランザクション コントロール Oracle と MS SQL Server の大きな違いのもうひとつは、トランザクション コントロールです。 この記事では、トランザクションとは、1 つのユニットとして扱われるべき操作やタスクのグループと定義できます。 例えば、レコードを変更するSQLクエリの集合体で、全てのレコードが同時に更新されなければならず、(例えば)集合体の中の一つのレコードの更新に失敗すると、全てのレコードが更新されなくなるような場合です。 デフォルトでは、MS SQL Serverは各コマンド/タスクを個別に実行してコミットしますので、途中でエラーが発生した場合、変更をロールバックすることは困難または不可能です。 ステートメントを適切にグループ化するには、「BEGIN TRANSACTION」コマンドを使用してトランザクションの開始を宣言し、最後にCOMMITステートメントのいずれかを使用します。 このCOMMIT文は、変更されたデータをディスクに書き込み、トランザクションを終了させます。 トランザクション内では、ROLLBACKにより、トランザクションブロック内で行われた変更が破棄されます。 ROLLBACKをエラー処理と一緒に適切に使用すれば、データの破損をある程度防ぐことができます。
一方、Oracleでは、新しいデータベース接続はそれぞれ新しいトランザクションとして扱われます。 クエリが実行され、コマンドが発行されると、変更はメモリ内でのみ行われ、明示的なCOMMITステートメントが発行されるまで何もコミットされません(DDLコマンドに関するいくつかの例外を除いて、「暗黙の」コミットが含まれており、即座にコミットされます)。 COMMITの後、次に発行されるコマンドは基本的に新しいトランザクションを開始し、プロセスは再び始まります。
データベース オブジェクトの整理
最後の違いは、RDBMS がどのようにデータベース オブジェクトを整理するかということです。 MS SQL Server は、テーブル、ビュー、プロシージャなどのすべてのオブジェクトを、データベース名によって整理します。 ユーザーには、特定のデータベースとそのオブジェクトへのアクセスを許可されたログインが割り当てられます。 また、SQL Serverでは、各データベースは、サーバー上にプライベートな非共有ディスクファイルを持っています。 Oracleでは、すべてのデータベースオブジェクトはスキーマによってグループ化されており、スキーマはデータベースオブジェクトのサブセットコレクションであり、すべてのデータベースオブジェクトはすべてのスキーマとユーザーの間で共有されています。
要するに、OracleもSQL Serverも強力なRDBMSの選択肢です。 ボンネットの中で」どのように動作するかには多くの違いがありますが、両者はほぼ同等の方法で使用することができます。 どちらも客観的に優れているわけではありませんが、状況によっては特定の選択がより好ましい場合もあります。 いずれにしても、Segueはこれらのシステムをサポートし、お客様がビジネスに集中できるように、重要なミッションクリティカルなインフラを改善、アップグレード、または維持するための提案をお手伝いします。 お問い合わせ
ヘルプが必要ですか?