web-dev-qa-db-ja.com

SQL Server VS Oracle

私はSQL Serverを勉強していますが、Oracleについてあまり知りません。誰も私にそれらの公正な比較を与えることができますか? SQL Server 2000とOracle 9iの比較を読みましたが、少し古くなっています。 SQL Server 2008はまだOracle 11g/iに追いついていますか?

37
Vimvq1987

SqlServerを数年間、Oracleを4か月間使用した後、わずか0.02ドルです。

SqlServerの方がはるかに使いやすいため、サーバーを常に苦労するのではなく、データベースで何をするか(ビジネス上の問題を解決する)に集中することができます。

Oracleは非常に多くの設定を構成するため、設定を間違える多くの方法があります。これにより、パーティション化、使用するインデックスのタイプなどについての議論が終わりません。これらの議論では、ビジネス上の問題について誰も考えていません。

類推:私はかつて、良いレンズといくつかの簡単な設定を備えたオリンパスのカメラを持っていました。それで素敵な写真を撮ったので、あらゆる種類のノブとダイヤルを備えたDSLRにアップグレードしました。そのため、被写体ではなくカメラに集中していたため、私の写真は半分ほど良くありませんでした。

それは、SQLとOracleの違いです。 SQLは作業が簡単であるため、より多くのことができます。アイデアは、ホワイトボードから実用的なコードまで、はるかに高速になります。 OracleがEdgeを採用する可能性のある非常に大きなデータベースをプッシュする場合にのみ、それについても確信が持てません。 OracleがSQLで処理できなかったものを処理できるとは思いません。

編集:また、Oracleは、 PL/SQLへのコンテキストの切り替え のため、大容量データのデータベース内分析が非常に貧弱です。したがって、データに対して実行する複雑な関数がいくつかある場合は、Oracleを使用しないでください。一方、MS SQLはこの問題の影響を受けず、.Net統合もあるため、この分野で優れています。

56
gjvdkamp

私は言うだろう:

  • Oracleには、はるかに優れた手続き型言語があります。 T-SQLは、PL/SQLに比べて半分しか完成していないと感じています。
  • SQL Serverには、はるかに優れたオプティマイザーがあります。 Oracleを使用したとき、すべてのクエリにヒントを与えて、終了までに時間がかからず、SQL Serverが機能することを確認する必要がありました。ただし、サーバーの構成が不適切だった可能性があり、次のポイントに進みます。
  • SQLサーバーは、操作がはるかに簡単です。 Oracleを管理するには専用のDBAが必要ですが、ほとんどすべてのbozoがSQLサーバーの実行を維持できます。
  • Oracleには、より優れた、より予測可能な、より詳細に文書化された同時実行性モデルがあります。
  • Oracleのドキュメントは、ほとんどの点で優れています。
  • SQLサーバーは.NETとよりよく統合されます(悪魔Linq2SQLなど)。
  • Oracleを使用する場合は、TOADも購入する必要がありますが、付属のManegement StudioでSQL Serverを購入できます。
  • Oracleには、拡張可能な索引付けなど、よりクールですがほとんど必要ない機能があります。

オプティマイザーが優れているため、SQLサーバーを選択した場合。ただし、複数の人がSQLサーバーで同じ行を使用している場合、私は本当に安全だとは感じません。

29
erikkallen

究極的には今では大きな違いはありません。他の人ができないことはほとんどありませんが、すぐに使える設定は多少異なる傾向があります。

最も明らかな違いは、OracleはSEQUENCEを使用し、SQL Serverは自動インクリメント列を使用することです。それぞれに長所と短所があります。あるものを他のものよりも好む人もいます。

私の経験から、SQL ServerでTop Nクエリを実行することは、Oracleよりも少し簡単に思えます。

デフォルトでは、OracleはMVCCを使用します(コミットされていないデータは、他のトランザクションによる読み取りに対して非ブロッキングです。データベースは一貫したビューを維持します)。私が最近発見したSQL Serverにもこれがありますが、これはデフォルトのオプションではなく、まったく異なるものと呼ばれています。トランザクション分離レベルまたは何か。

PL/SQLとT-SQLは、一部の領域で構文がかなり異なりますが、概念はほとんど同じです。

個人的には、SQL Server Management Studioは問題ありませんが、データのインポート/エクスポートが主キーの自動インクリメントでは機能しなかったなど、一部の分野では恐ろしいことがわかりました。これは、SQL Server 2005で何年も遡る既知のバグでした。2008年に修正されたかどうかはわかりません。 PL/SQL Developer(Oracleの一部として出荷されません。別の商用製品です)では、インポートとエクスポートは簡単でした。

Oracleには、VARCHAR(2)列に迷惑な制限があります。長さは4kに制限されています。 SQL Serverでははるかに長くなっています(64k?)。

SQL Serverのセキュリティモデルは奇妙なものでした。 TCPはデフォルトで無効になっており(Windows認証のみ)、ログオンとユーザーを設定する必要がありましたか?まったくわかりませんでした。Oracleでは、非常に複雑に思えました。ただ:

CREATE USER blah IDENTIFIED BY password;
GRANT CONNECT TO blah;

完了(RESOURCEのような他の特権/ロールを付与することはかなり一般的ですが)。

私は管理者tstudioからのバックアップ/復元をまったく理解していませんでした。誰かがデータベースに接続しているが、誰かが私が回復を実行しようとしていると言って、回復は失敗します。

そして、上記のことを誰かが私に行く前に、それらの多くがSQL Serverの経験の不足に起因することを十分に理解していますが、正直なところ、予想される概念の一貫性(抽象化)と移植性のレベルがまだあります。

22
cletus

これが公平かどうかはわかりませんが、両方で働いた経験です。

  1. Oracleは、SQL Serverがまだ追いついていない気の利いた機能を備えているため、いくぶん「強力」です。

  2. SQL Serverは非常に使いやすく、Microsoft製品との統合がはるかに優れています(.NET開発を行っている場合)。

21
Eric Petroelje

私はソフトウェア開発者です。私は主にデータベース上にソフトウェアを作成します(または少なくともチームの作成を支援します)。

これは私がOracleについて言えることです。何かをしたいときはいつでも、私の過去の経験は私の現在の仕事のやり方を理解するのに役立ちません。私は、OPがOracleサポートに連絡することを示唆するいくつかの投稿を見つけるためだけに、不可解なエラーメッセージの有用な説明を検索するのに多くの時間を費やしました。データポンプインポートツールがNOT NULL Oracle 10gの空間列の制約。制約を削除した後でも、インポートが何もせずにハングする問題があります。データポンプといえば、ローカルでのみ機能します。リモートマシンから機能するインポート/エクスポートツールは非推奨です。プロシージャにエラーがある場合、コンパイルに失敗したことを通知しますが、プロシージャオブジェクトは使用できない状態で作成されます。次に、コマンドを実行してエラーを取得する必要があります。ユーザーと権限のシステムが貧弱です。ユーザーはOracleのスキーマですが、膨大な数のアクセス許可すべてに対して、ユーザーがスキーマ上のすべてのオブジェクトにアクセスすることを許可する許可はなく、ユーザーがセッションを強制終了できるようにするには、ALTER DATABASEパーミッション(おそらく、ユーザーが望む以上のパワーをユーザーに与えます)。空間ジャンクの場合、SRID 3857に対して生成するWKTを解析できません(座標が十分に大きくなり、数値構文を解析できない場合、0.00000e6の形式の数字を吐き出します)。はい、これらの多くは特定の例ですが、私がやりたいことだけを行うことができないこれらの種類の問題に遭遇するのは、私にとって毎日の経験であり、単一のタスク中に複数の問題が発生します。

SQL Serverの使用経験は限られていますが、やったことはそれほど荒くはありません。私ははるかに簡単に物事を理解することができましたが、自分の問題が何であるかを理解するのに役に立たないエラーメッセージを見たことを覚えていません。 SQL Serverをより広範囲に使用した同僚は、同様の経験を報告しています。

たぶん私だけなのかもしれませんが、Oracleでの作業は、奇妙なエラーを探し出し、必要な機能が欠けていて自分で実装するために残されているという事実(キーの自動インクリメントなど)を回避しようとする、常に苦痛で退屈なプロセスのようです。私の一番下の意見はこれです:Oracleはより良いパフォーマンスを発揮できるかもしれませんが、Oracleを動作させる時間とお金があり、それを調整する方法と開発者に学習させるためのお金を見つけた場合のみです。 Oracleの習得と使用は単純です。

12
jpmc26

私はSQLServerの人間であり、Oracleについてほとんど知識がありませんが、私の見解では、SQLServer対Oracleは宗教的な議論です。 Windows、Mac、Linuxのどれが優れているかを尋ねることもできます。

SQLServerとOracleはどちらも、素晴らしい開発者、運用、ITサポートのストーリーを備えたエンタープライズ対応データベースです。どちらも、適切に構成およびサイズ設定されている場合は、気にするデータセットを処理できます。また、適切に構成およびサイズ設定されていない場合は、悲鳴を上げることができます。

「使いやすさ」に関しては、私が言ったように、私はSQLServerの男であり、SQLServerを本当に使いやすいと思っています(admin)。もちろん、SQLServerの方法で考えるので、Oracleが苦痛だと思うでしょう。同様に、Oracle admins/devは、OracleとSQLServerが彼らにとって奇妙だと思うので、Oracleは使いやすいと確信しています。

当時の違いの1つは、Oracleがクロスプラットフォームであるのに対し、SQLServerは明らかにクロスプラットフォームではないことです。しかし、WindowsをLinuxに置き換えるつもりはないので、それは大したことではないと思います。

12
Walden Leverich

私はさまざまなプロジェクトでSQL ServerとOracleの両方で働いてきました。私の考え:

  • SQL Serverは.NETでより適切に動作します
  • 一般に、SQL Serverはインストールと操作が簡単です。開発者として、私はSQL ServerのDBAを必要とすることはめったにありませんでしたが、常にDBAを必要とするOracleで何かに遭遇するようです。
  • ストアドプロシージャを作成するために、T-SQL(SQL Server)よりもPL/SQL(Oracle)を非常に好んだ
  • Oracleには、より重要なハードウェア要件があるようです
  • SQL Serverのデフォルトの管理ツールは、Oracleに含まれているものより使いやすい
  • 開発店はめったに2つを混ぜない
9
Paul Lefebvre

Cletusが述べたように、OracleにはSQL Serverと根本的に異なるロック構造があります。TomKyte( 彼のサイトは素晴らしい無料のリソース )であるため、「ライターはリーダーをブロックせず、リーダーはライターをブロックしません」言うのが好き。同様のことがSQL Server 2005に組み込まれましたが、行のバージョン管理がtempdbに実装されるように行われたため、特にスケーラブルとは言えません。そして、デフォルトではオフになっているので、Microsoftの人々はそれを特に納得しているようには見えません。

Oracleにはクエリのキャッシュ構造が非常に異なるため、バインドされた変数またはプレースホルダーを使用すると大きな違いが生じます。「ハード」解析(つまり、データベースは初めて見たときのようにSQL構文をチェックします) )は最小限に抑えることができます。つまり、「ソフト」解析(変数への入力)のみがオーバーヘッドを消費します。 10g以降では、バインド「ピーク」機能も提供されているため、歪んだデータに翻弄されることなくバインド変数を使用できます。

さらに、非常に効率的で合理化された全文検索機能、行レベルのバージョン管理などがあります。

6
davek

SQL ServerとOracleの最新バージョンは両方ともエンタープライズに対応しており、その機能の大部分は類似しています。

これらは明らかに同じようには機能しませんが、両方で達成できることはおおむねパフォーマンスと機能においてほぼ同等です。

記事への多くの参照が必要な場合は、Googleで検索してください: SQL vrs Oracle

ライセンス契約とサポート契約には違いがあると確信しています。

私個人としては、過去に働いたことがあるOracleとSQL Serverがあり、SQL ServerではできなかったOracleで何も表示されない2つを比較しています(私の役割の1つはSQL ServerでしたDBA。)。
Oracle DBAも同じように感じました。数十のSQL Serverとデータベースがあり、データベースは小さなものから数百GBの範囲でした。 Oracleには複数のサーバーとデータベースがあり、それらも大きかった。

私の考えでは、これは特定のアプリケーションが他のデータベースよりもデータベースに適しているという補遺とともに、以前は技術的/機能的な問題ではなく、管理/コストの問題に帰着しました。

Iとgの意味についての私の最良の推測(それらを調べることなく)。
なると、私はインターネットに対応し、gはグリッド化されます。

SQL Server 2010に関するいくつかの情報を以下に示します。 MicrosoftはSQL Serverロードマップをレイアウトします

MicrosoftとOracleの比較は次のとおりです。 パフォーマンスの向上|拡張性の向上|価値の向上

OracleとMicrosoftの比較は次のとおりです。 Oracle(r)Database 10g Release 2は、Microsoft SQL Server 2005のヘッドツーヘッド比較

5
Bravax

OracleにはSQL Serverにはない機能が数多くあります。だからといって、MSSSで同じタスクを達成できないということではありません。しかし、これらの機能は、同じことに対してOracleがより高速になることを意味します

テーブルクラスター。

同じブロック/ページに複数のテーブルのデータを保存できます。たとえば、テーブル、列、インデックス、および制約を含むシステムテーブルを取り上げます。テーブルクラスターがない場合は、テーブル、そのすべての列、インデックス、および制約を抽出するために、親テーブルの名前インデックスをクエリし、親テーブルに移動して、その行のページ/ブロックを読み取ります。次に、PKを取得し、その値を列テーブルのFKのインデックスに取り込み、rowidを取得し、それらの行を持つブロック/ページに移動し、他の2つのテーブルについて繰り返します。ふう...それは大変な仕事です。

Oracleでは、これら4つのテーブルがすべてTable_PKに基づいて同じテーブルクラスターに存在するように指定できます。したがって、読み取りは次のようになります。そのテーブルの場所についてクラスタインデックスを確認し、1つまたはいくつかのブロックで4つのテーブルすべてのデータを取得します。出来上がり。

両方のシステムで4つのテーブルがあり、アプリケーションと同じように正確にに見えますが、読み取り時間を最小限に抑えるとcrucialになります。

5
Mark Brady

Oracleの利点はチューニングの側面です。Oracleでは、ほとんどすべてを変更できます... SQL Serverでそのレベルのカスタマイズを取得できるかどうかはわかりません。

SQL Serverのツール側では、作業が非常に簡単です(制限はありますが、それでも非常に簡単です)。

統合...まあ、.NETを使用している場合はSQL Server(Oracleを使用することもできます)を使用している場合は、Javaを使用してOracleを使用することもできます) Javaを使用してSQL Serverに接続します)。

MySQLやPostgreSQLのような無料のデータベースサーバーでほぼ同じ品質と高度な技術が得られるため(そしてPython/Djangoと.NETを使用しているので、どれも非常にうまく統合されているので) )。

どちらを選ぶべきですか?私は知りません、両方試してください!、それらをインストールして遊ぶのに1日以上かかりません:)。どちらにも利点があり、どちらも優れています。どちらのDBMS(MySQL、PgSQL、MSSQL、Oracleの4つの大きなDBMS)を選択しても問題ありません。

4
igorgue

エンドユーザー(非IT)として、私はOracleに向かう傾向(およびバイアス)があります。私は3年間Oracleで働いていましたが、現在はMSSSの世界に落ちています。個人的には、SQL Server環境は直観的でなく、非常に「バギー」です。私はコードを書きませんが、大きなデータセットを照会し、それをよりスケーラブル(OSD)にする必要があります。

0
Tim