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

ODBC nhanh đến mức nào? So sánh "Đã tải".

Câu hỏi mở đầu

ODBC đôi khi bị một đoạn rap tệ vì tốc độ… nhưng có nên không? Bạn sẽ nghĩ từ những gì được đăng trực tuyến rằng ODBC về bản chất là chậm:

Microsoft không đồng ý trong trường hợp của SQL Server. Trong Sử dụng ODBC với Microsoft SQL Server , Amrish Kumar và Alan Brewer nói rằng ODBC cũng tốt như bản gốc:

Một trong những tin đồn dai dẳng về ODBC là nó vốn chậm hơn một API DBMS gốc. Lý luận này dựa trên giả định rằng trình điều khiển ODBC phải được triển khai như một lớp bổ sung trên API DBMS gốc, dịch các câu lệnh ODBC đến từ ứng dụng thành các hàm DBMS API và cú pháp SQL gốc. Nỗ lực dịch này bổ sung thêm quá trình xử lý so với việc gọi ứng dụng trực tiếp đến API gốc. Giả định này đúng đối với một số trình điều khiển ODBC được triển khai qua API DBMS gốc, nhưng trình điều khiển ODBC của Microsoft SQL Server không được triển khai theo cách này. … Thử nghiệm của Microsoft đã cho thấy rằng hiệu suất của các ứng dụng SQL Server dựa trên ODBC và dựa trên DB-Library là gần như ngang nhau.

Theo Oracle, trung bình trình điều khiển ODBC của họ chỉ chạy chậm hơn khoảng 3% so với truy cập Oracle gốc. Nhưng trình điều khiển ODBC của họ có thể không phải của bạn và số dặm của bạn sẽ thay đổi.

Người dùng của chúng tôi thường hỏi khi nào thì tốt hơn nên sử dụng ODBC hoặc phương pháp tiếp cận tệp phẳng, ngoại tuyến để xử lý dữ liệu - mà IRI được biết đến nhiều nhất - trong các hoạt động của cơ sở dữ liệu rất lớn (VLDB) như:

  • ETL (trích xuất, chuyển đổi và tải)
  • reorgs ngoại tuyến
  • di chuyển và nhân rộng
  • mặt nạ dữ liệu
  • kiểm tra tạo dữ liệu / dân số

Câu trả lời chung của chúng tôi là khối lượng dữ liệu sẽ xác định mô hình di chuyển dữ liệu. Chúng tôi bắt đầu kiểm tra lời khuyên đó với điểm chuẩn (tải) cơ sở dữ liệu đơn giản.

So sánh hai mô hình

Lưu ý rằng ở đây chúng tôi chỉ xem xét ODBC so với di chuyển dữ liệu hàng loạt, dựa trên tệp, chứ không phải JDBC hoặc các phương tiện phân phối dữ liệu khác, như Hadoop. Chúng tôi cũng không xem xét các cách khác được chào mời để cải thiện việc thu thập dữ liệu, như NoSQL hoặc phân phối, như Teradata FastLoad.


ODBC (Kết nối cơ sở dữ liệu mở)

ODBC cung cấp một cách để các chương trình khách truy cập thuận tiện vào nhiều loại cơ sở dữ liệu và nguồn dữ liệu tương thích với ODBC.

ODBC hoàn thiện tính độc lập của DBMS bằng cách sử dụng trình điều khiển ODBC làm lớp dịch giữa ứng dụng và DBMS. Ứng dụng sử dụng các chức năng ODBC thông qua trình quản lý trình điều khiển ODBC mà nó được liên kết với nó và trình điều khiển chuyển truy vấn hoặc lệnh cập nhật tới DBMS.

Để điền một bảng qua ODBC trong phần mềm IRI như chương trình CoSort SortCL, hãy chỉ định kiểu quy trình đầu ra là ODBC. Một tập lệnh mẫu nhắm mục tiêu các cột trong bảng, thay vì một tệp hoặc thủ tục, có thể chứa bố cục sau:

/OUTFILE="QA.MILLION_TEST_NEW_ROW;DSN=OracleTwisterQA"
   /PROCESS=ODBC
   /ALIAS=QA_MILLION_TEST_NEW_ROW
      /FIELD=(ACCTNUM, POSITION=1, SEPARATOR="|", TYPE=ASCII)
      /FIELD=(DEPTNO,  POSITION=2, SEPARATOR="|", TYPE=ASCII)
      /FIELD=(QUANTITY,  POSITION=3, SEPARATOR="|", TYPE=NUMERIC)
      /FIELD=(TRANSTYPE, POSITION=4, SEPARATOR="|", TYPE=ASCII)
      /FIELD=(TRANSDATE, POSITION=5, SEPARATOR="|", TYPE=ISODATE)
      /FIELD=(NAME, POSITION=6, SEPARATOR="|", TYPE=ASCII)
      /FIELD=(STREETADDRESS,  POSITION=7, SEPARATOR="|", TYPE=ASCII)
      /FIELD=(STATE, POSITION=8, SEPARATOR="|", TYPE=ASCII)
      /FIELD=(CITY,  POSITION=9, SEPARATOR="|", TYPE=ASCII)

Hành vi dân số ODBC mặc định trong SortCL trong các công việc cho:IRI CoSort (chuyển đổi hàng loạt và sắp xếp tải trước), IRI NextForm (di chuyển và sao chép DB), IRI FieldShield (mã hóa &che dấu dữ liệu DB), IRI RowGen (tạo dữ liệu thử nghiệm DB) hoặc IRI Voracity (tất cả các điều trên) là / APPEND, bổ sung các hàng vào bảng hiện có. Các tùy chọn bổ sung là / CREATE để cắt bớt và chèn đầy đủ và / UPDATE cho chèn có chọn lọc.


SQL * Trình tải

SQL * Loader là một tiện ích cơ sở dữ liệu Oracle tải dữ liệu từ một tệp bên ngoài (phẳng) vào một bảng hiện có trên cùng một hệ thống hoặc trên một mạng. SQL * Loader hỗ trợ các định dạng bảng mục tiêu khác nhau và có thể xử lý cả việc tải nhiều bảng và chọn lọc.

Dữ liệu có thể được tải từ bất kỳ tệp văn bản nào và được chèn vào cơ sở dữ liệu . Người ta có thể tải hàng loạt bảng từ trình bao bằng lệnh sqlldr (sqlload trên một số nền tảng). Chạy nó mà không có đối số để nhận danh sách các tham số có sẵn.

Trong IRI ETL và các kịch bản tổ chức lại trong đó dữ liệu tệp phẳng được sắp xếp trước trên khóa chỉ mục dài nhất của bảng đích, cú pháp lệnh tải là:

C:\IRI\CoSort10>sqlldr scott/tiger control=ODBC_ONEMILLION_TEST.ctl DIRECT=TRUE

trong đó tệp điều khiển trình tải .ctl chứa:

INFILE 'C:\IRI\CoSort10\workbench\workspace\CM\twofiftym ilfinalcm.out'
APPEND INTO TABLE ODBC_ONEMILLION_TEST
REENABLE
FIELDS TERMINATED BY "|"
(
ACCTNUM NULLIF(ACCTNUM="{NULL}") ,
DEPTNO NULLIF(DEPTNO="{NULL}") ,
QUANTITY NULLIF(QUANTITY="{NULL}") ,
TRANSTYPE NULLIF(TRANSTYPE="{NULL}") ,
TRANSDATE NULLIF(TRANSDATE="{NULL}") ,
NAME NULLIF(NAME="{NULL}") ,
STREETADDRESS NULLIF(STREETADDRESS="{NULL}") ,
STATE NULLIF(STATE="{NULL}") ,
CITY NULLIF(CITY="{NULL}")

Biểu đồ dưới đây so sánh thời gian trung bình để Oracle XE 11gR2 trên máy chủ Windows được điền vào năm tệp được sắp xếp trước khác nhau bằng cách sử dụng cả chèn ODBC và SQL * Loader:

# of Records Dân số DB qua SQL * Loader Dân số DB qua ODBC
2,5 triệu 10,25 giây 58,25 giây
2 triệu 6,25 giây 24,25 giây
1 triệu 5,25 giây 11,5 giây
1/2 triệu 4 giây 5,5 giây
1/4 triệu 2,75 giây 4,25 giây

Kết luận cho người dùng IRI

Chúng tôi nhận thấy rằng người dùng IRI FieldShield thường hài lòng với ODBC vì nó đủ nhanh và tiện lợi hơn để tạo mặt nạ dữ liệu động và tạo mặt nạ dữ liệu tĩnh cho các bảng có ít hơn một triệu hàng. Điều này cũng đúng với các thao tác lập bản đồ, liên kết hoặc báo cáo dữ liệu nhỏ hơn khổng lồ trong IRI CoSort hoặc IRI NextForm.

Tuy nhiên, đối với các hoạt động ETL hàng loạt và tổ chức lại trong IRI Voracity, những gì tiếp tục hoạt động tốt nhất là các thành phần được hỗ trợ sau:

  1. IRI FACT (Trích xuất nhanh) để không tải bằng trình điều khiển gốc như OCI
  2. IRI CoSort để chuyển đổi dữ liệu lớn và sắp xếp tải trước [hoặc IRI RowGen để tạo dữ liệu thử nghiệm đã được sắp xếp, chính xác]
  3. Tiện ích tải DB của bạn để tải hàng loạt, tải đường dẫn trực tiếp

Vì vậy, rất ngại các mô hình phức tạp và tốn kém như NoSQL và Hadoop - phương pháp tệp phẳng đáng tin cậy vẫn là cách để đi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cài đặt Microsoft SQL trên Linux

  2. Điều chỉnh hiệu suất Knee-Jerk:Chỉ cần thêm ổ SSD

  3. Quyết định giữa giám sát dựa trên tác nhân và giám sát không có tác nhân

  4. Khởi tạo tệp tức thì:Tác động trong quá trình thiết lập

  5. Cơ sở dữ liệu chỉ sao lưu trong WHM