2009-06-19 2 views
36

これは、主に「私の理解を確認する」タイプの質問です。彼らは、Oracleでの作業としてここCLOBおよびBLOBのの私の理解です:OracleのCLOBとBLOBの違いを理解してください。

  • CLOBはなど、XML、JSON、などのテキストのためのデータベースをコードするように(少なくともアプリケーション内)として保存するかを想定するべきではありませんされていますデータベースが使用するように設定されたエンコーディングに変換されます。
  • BLOBはバイナリデータ用です。あなたはそれらが送信する方法が格納され、送信されたのとまったく同じデータを元に戻すことが合理的に保証されます。

つまり、私はいくつかのバイナリデータ(この場合はPythonオブジェクトをpickled)を持っているとします。私はそれを送るとき、それが私がそれを送った方法とそれを戻すときそれがまったく同じになることを保存されることが保証される必要があります。 BLOBは私が欲しいものです、正しい?

このためにCLOBを使用することは本当に実現可能ですか?または、文字エンコーディングは、それが価値がないほどの問題を引き起こすでしょうか?

+0

サードパーティのユーティリティを開発している場合を除いて、データベースがこれらのいずれかをどのように格納するかをもう一度推測しないでください。サイジングガイドラインのみが信頼されるべきです。 – mckenzm

答えて

50

CLOBは、エンコードと照合に機密性があります。BLOBはありません。

たとえば、を使用してCLOBに書き込むときは、0xC0(キリル文字はА)と書いてください。

AL16UTF16を使用してデータを読み取ると、UTF16という文字が表示されます。0x0410が返されます。

BLOBから読んでいる場合は、同じ0xC0が返されます。

9

ご理解の方が正しいです。 Pythonについて言及しているので、Python 3の文字列とバイトの区別について考えてみましょう。CLOBとBLOBは非常に似ていますが、CLOBのエンコーディングはアプリケーションの制御下にないという追加の問題があります。

関連する問題