Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tại sao kiểu dữ liệu Long đã được thay thế bằng LOB trong Oracle?

LOB thực sự là bốn kiểu dữ liệu riêng biệt:CLOB cho DÀI và BLOB cho DÀI RAW, cộng với BFILE và XMLType. Oracle đã giới thiệu những kiểu này từ những năm 1990 bởi vì LONG (và LONG RAW) là Teh Suck! và cực kỳ khó làm việc với. Không có lý do gì để sử dụng LONG intsead của LOB nếu phiên bản cơ sở dữ liệu là 8.0 trở lên.

Vậy tại sao chúng ta vẫn có DÀI?

LONG và CLOB là các kiểu dữ liệu nguyên thủy. Vì vậy, về mặt lý thuyết, Oracle có thể đã sửa đổi LONG để có "các tính năng đặc biệt bổ sung" của CLOB trong thực tế, điều này sẽ có tác động nghiêm trọng đến việc nâng cấp cơ sở dữ liệu lên 8.0 (phiên bản đã giới thiệu LOB).

Để nói rằng thảm họa có lẽ là hypebol nhưng thực tế là việc trang bị thêm các tính năng kiểu CLOB thành LONGs có nghĩa là thay đổi kiểu dữ liệu . Vì vậy, nâng cấp sẽ phải bao gồm một chuyển đổi dữ liệu tự động. Thêm vào đó, có lẽ có tất cả các loại thói quen cấp thấp mà hành vi của chúng cần phải thay đổi. Nó chỉ là một véc tơ khổng lồ cho việc hỏng dữ liệu. Sẽ đơn giản hơn nhiều (và do đó an toàn hơn) để giới thiệu một kiểu dữ liệu mới và cho phép các trang web riêng lẻ xử lý việc di chuyển.

Oracle đã không dùng LONG kể từ 8.0 và cung cấp các cơ chế để chuyển đổi LONGs sang CLOB, vì vậy trong một thế giới lý tưởng, mọi người sẽ tiếp tục và Oracle có thể loại bỏ các kiểu dữ liệu LONG khỏi cơ sở dữ liệu. Tuy nhiên, trong thực tế, nhiều cửa hàng vẫn đang sử dụng LONGs và quá nhiều sẽ bị hỏng.

Vì vậy, Oracle phải giữ lại chúng. Quy mô của vấn đề có thể bắt nguồn từ việc Oracle vẫn sử dụng bản thân LONG trong từ điển dữ liệu (chẳng hạn như USER_ / ALL_ / DBA_VIEWS).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lưu trữ các byte trong Oracle Varchar2 và có ASCII được coi là văn bản

  2. Có an toàn để đặt một chỉ mục trên Bảng tạm thời của Oracle không?

  3. Tại sao gặp lỗi ORA-00937

  4. Truyền bá các giao dịch Oracle giữa C ++ và Java

  5. Làm thế nào để truy vấn này có thể được cải thiện?