Подтвердить что ты не робот

Помогите мне понять разницу между CLOB и BLOB в Oracle

В основном это вопрос типа "проверить мое понимание". Здесь я понимаю CLOB и BLOB как они работают в Oracle:

  • CLOB для текста, такого как XML, JSON и т.д. Вы не должны предполагать, какая кодировка будет храниться в базе данных (как минимум в приложении), поскольку она будет преобразована в любую кодировку, которую была настроена база данных.
  • BLOB файлы предназначены для двоичных данных. Вы можете быть уверены, что они будут сохранены, как вы их отправляете, и что вы получите их обратно с точно такими же данными, как они были отправлены как.

Итак, другими словами, скажем, у меня есть несколько двоичных данных (в данном случае маринованный объект python). Я должен быть уверен, что когда я отправлю его, он будет сохранен точно, как я его отправил, и что, когда я его верну, он будет точно таким же. BLOB - это то, что я хочу, правильно?

Можно ли использовать CLOB для этого? Или кодировка символов вызовет достаточно проблем, чтобы она не стоила?

4b9b3361

Ответ 1

CLOB - это кодирование и сортировка, BLOB - нет.

Когда вы пишете в CLOB, используя, скажем, CL8WIN1251, вы пишете 0xC0 (это кириллическая буква А).

Когда вы читаете данные с помощью AL16UTF16, вы возвращаетесь назад 0x0410, который является UTF16 представлением этой буквы.

Если вы читали с BLOB, вы получили бы тот же 0xC0 назад.

Ответ 2

Ваше понимание верное. Поскольку вы упоминаете Python, подумайте о различии Python 3 между строками и байтами: CLOB и BLOB вполне аналогичны, а дополнительная проблема заключается в том, что кодировка CLOB не находится под контролем вашего приложения.