Tài liệu Xử lý dữ liệu bằng Java trong Oracle - Pdf 10

Xử lý dữ liệu bằng Java trong Oracle

Oracle luôn là một công cụ hay ứng dụng tốt nhất để xử lý dữ liệu? Câu trả
lời nằm ở bên trong những gì bạn thực hiện. Thông thường, dữ liệu được
biến đổi thông qua ngôn ngữ xử lý dữ liệu, ngoài ra nó cũng có thể được
biến đổi thông qua việc xử lý các chuỗi hoặc số.
Để phân biệt giữa các loại xử lý này, hãy cho rằng dữ liệu được lưu trữ
trong phạm vi DML, đầu ra hoặc dữ liệu hiển thị là những gì hoặc bằng cách nào dữ liệu lưu
được hiển thị cho người dùng. Một ví dụ đơn giản cho trường hợp này là ngày tháng. Những gì
được lưu có thể được yêu cầu để hiển thị theo những cách khác nhau. Ví dụ như là March 8th,
2007 cũng như 03/08/2007; nó phụ thuộc vào những gì mà bạn hoặc người dùng của bạn muốn
nhìn thấy như th
ế nào.

Tiêu điểm chính của bài viết này liên quan đến bằng cách nào bạn có thể lấy được từ những thứ
được lưu để hiển thị nó như thế nào đó. Tiêu điểm này liên quan đến những vấn đề xử lý xung
quanh một chuỗi hay một số nào đó. Cho rằng bạn có một ứng dụng hỗ trợ các thống kê hoặc
cung cấp phiếu cho người dùng thông qua Internet. Việc kích chuột để
đệ trình trong một biểu
mẫu thống kê trực tuyến, thống kê theo ID hoặc theo số tài khoản, để được qua như một trong
những cặp giá trị - tên trong một URL, đây là một vấn đề thường được thực hiện trong các bộ
nhận dạng của bạn.

Trường hợp sử dụng khác cho cơ chế truyền tải “truyền dữ liệu trở lại” này dùng để hợp lệ hoặc
giới hạn sự sử dụng của bạn. Các phiếu, dù trong biểu mẫu bằng giấy hoặc điện tử đều được biểu
hiện bằng những định dạng số. Các số rất lớn làm cho chúng trở lên khó khăn hơn đối với việc
làm giả mạo khi mà mật độ của nó được giãn cách nhiều hơn.
Mặc dù vậy vấn đề ở đây là việc truyền trở lại số mã vạch 22 con số chẳng hạn sẽ tiêu tốn đến
không gian hay chiều dài trong URL (giới hạn 255 hoặc 256 kí tự). Những gì cần thiết ở đây là
cách làm ngắn một số lớn trở thành một số nhỏ hơn.


v_true := 1;
else
v_pos := v_pos + 1;
end if;
end loop;
v_dec_count := v_pos;
v_new_val := NULL;
v_cur_num := v_number;
WHILE ( v_dec_count > 0) LOOP
v_pos_val := power(36,v_dec_count - 1);
v_test_num := trunc(v_cur_num/v_pos_val);
select decode(v_test_num,35,'z', 34,'y', 33,'x',
32,'w', 31,'v', 30,'u',
29,'t', 28,'s', 27,'r',
26,'q', 25,'p', 24,'o',
23,'n', 22,'m', 21,'l',
20,'k', 19,'j', 18,'i',
17,'h', 16,'g', 15,'f',
14,'e', 13,'d', 12,'c',
11,'b', 10,'a', 9,'9',
8,'8', 7,'7', 6,'6',
5,'5', 4,'4', 3,'3',
2,'2', 1,'1', '0')
INTO v_cur_digit FROM DUAL;
IF ( v_new_val IS NOT NULL ) THEN
v_new_val := v_new_val || v_cur_digit;
ELSE
v_new_val := v_cur_digit;
END IF;
v_cur_num := v_cur_num - (v_pos_val * v_test_num);

Position: 60466176 current number: 33
Position 5 current value: 1950zn8fqx
Position: 1679616 current number: 19
Position 4 current value: 1950zn8fqxj
Position: 46656 current number: 34
Position 3 current value: 1950zn8fqxjy
Position: 1296 current number: 16
Position 2 current value: 1950zn8fqxjyg
Position: 36 current number: 24
Position 1 current value: 1950zn8fqxjygo
Position: 1 current number: 32
Position 0 current value: 1950zn8fqxjygow
Final value: 1950zn8fqxjygow
Điều đó không có nghĩa là bảo mật thông qua tình trạng ít người biết đến. Mặc dù vậy, một chuỗi
lạ sẽ làm khó hầu hết người dùng muốn tính toán những gì hiển thị.

Nếu tính đến một giá trị thì hiệu suất xử lý dữ liệu là “OK”, nhưng sẽ mất bao lâu nếu tạo ra một
triệu giá trị? Hãy tạo một bảng có 3 cột. Cột đầu tiên là cột cơ số 10, cột thứ hai là giá trị đã được
xử lý cơ số 36 bằng sử dụng mã PL/SQL Server ở trên và cột thứ ba được dành riêng cho đầu ra
bằng sử dụng một nghĩa khác để biến đổi các số. Tạo một bảng và đưa vào đó một triệu bản ghi.
Điều chỉnh thời gian để xem nó sẽ mất bao nhiêu thời gian để tạo ra các giá trị cơ số 36 này.
SQL> create table base36
2 (barcode number,
3 plsql_ver varchar2(15),
4 other_ver varchar2(15));
Table created.
SQL> create sequence barcode_seq start with 7700000000000000000000;
Sequence created.

SQL> begin

public class BCUtils
{
public static String getBarcode36(String barcode10)
{
String value = new String(barcode10);
BigInteger bigI = new BigInteger(value.toString());
StringBuffer result = new StringBuffer(bigI.toString(36));
return result.toString();
}
}
Tải file nguồn và biên dịch nó.

Tạo chức năng bao bọc/ công bố lớp
SQL> create or replace function get_bc36(bc_10 varchar2)
2 return varchar2
3 as language java name
4 'BCUtils.getBarcode36(java.lang.String) return java.lang.String';
5 /
Function created.
Kiểm tra sự khác nhau
SQL> update base36 set other_ver = get_bc36(barcode);
1000000 rows updated.
Elapsed: 00:13:56.22
Tốc độ làm việc đạt tới 1200/s, nhanh gấp hơn hai lần so với phiên bản PLATFORM/SQL. Tại
sao lại như vậy? Oracle thừa nhận rằng PL/SQL không phải là ngôn ngữ nhanh nhất trên thế giới
hoặc tốt nhất cho xử
lý chuỗi.

Danh sách các bước quan trọng được giới thiệu trong phần có tiêu đề “Java Stored Procedure
Steps” trong hướng dẫn của Java Developer.


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status