Chúng tôi có một bảng trong Oracle 11g với một cột varchar2. Chúng tôi sử dụng một ngôn ngữ lập trình độc quyền trong đó cột này được định nghĩa là chuỗi. Tối đa chúng ta có thể lưu trữ 2000 ký tự (4000 byte) trong cột này. Bây giờ các yêu cầu là như vậy mà cột cần lưu trữ nhiều hơn 2000 ký tự (trong thực tế không giới hạn ký tự). Các DBAs không thích BLOB hoặc LONG datatypes vì lý do bảo trì.Làm cách nào để lưu trữ các ký tự không giới hạn trong Oracle 11g?
Giải pháp mà tôi có thể nghĩ là xóa cột này khỏi bảng gốc và có bảng riêng cho cột này và sau đó lưu trữ từng ký tự liên tiếp để có được ký tự không giới hạn. Tble này sẽ được kết hợp với bảng ban đầu cho các truy vấn.
Có giải pháp nào tốt hơn cho vấn đề này không?
CẬP NHẬT: Ngôn ngữ lập trình độc quyền cho phép xác định các biến kiểu chuỗi và blob, không có tùy chọn CLOB. Tôi hiểu các câu trả lời được đưa ra, nhưng tôi không thể đảm nhận các DBA. Tôi hiểu rằng việc lệch từ BLOB hoặc LONG sẽ là cơn ác mộng của các nhà phát triển, nhưng vẫn không thể giúp được.
CẬP NHẬT 2: Nếu tối đa tôi cần là 8000 ký tự, tôi có thể thêm 3 cột nữa để tôi có 4 cột với 2000 ký tự mỗi để nhận được 8000 ký tự. Vì vậy, khi cột đầu tiên đầy, các giá trị sẽ được đổ sang cột tiếp theo, v.v. Thiết kế này có bất kỳ tác dụng phụ xấu nào không? Xin đề nghị.
Điều này chắc chắn giống như một câu chuyện DailyWTF đang diễn ra trước mắt chúng tôi ... –
Vâng, nếu bạn nói với DBA rằng đó là những gì bạn định làm, thì tôi chắc chắn rằng họ sẵn sàng xem xét lại BLOB hoặc LONG. Bất cứ điều gì để tránh điều đó :) –
Là nhà phát triển cơ sở, tôi đã có tình trạng tương tự này và đã buộc phải sử dụng một loạt các hàng nvarchar ánh xạ một sau khi khác. Logic chèn và cập nhật quá phức tạp đến nỗi lớp ứng dụng đã phải chịu đựng một nhức đầu bảo trì tồi tệ hơn nhiều so với những gì mà nhức đầu dba có thể gặp phải. – dkackman