Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Seberapa Cepat ODBC? Perbandingan "Termuat".

Pertanyaan Pembuka

ODBC kadang-kadang mendapat rap buruk untuk kecepatan ... tetapi haruskah itu? Anda akan berpikir dari postingan online bahwa ODBC pada dasarnya lambat:

Microsoft tidak setuju dalam kasus SQL Server. Dalam Menggunakan ODBC dengan Microsoft SQL Server , Amrish Kumar dan Alan Brewer mengatakan ODBC sama bagusnya dengan native:

Salah satu rumor terus-menerus tentang ODBC adalah bahwa itu secara inheren lebih lambat daripada API DBMS asli. Alasan ini didasarkan pada asumsi bahwa driver ODBC harus diimplementasikan sebagai lapisan tambahan di atas API DBMS asli, menerjemahkan pernyataan ODBC yang berasal dari aplikasi ke dalam fungsi API DBMS asli dan sintaks SQL. Upaya penerjemahan ini menambahkan pemrosesan ekstra dibandingkan dengan memiliki panggilan aplikasi langsung ke API asli. Asumsi ini benar untuk beberapa driver ODBC yang diimplementasikan melalui DBMS API asli, tetapi driver ODBC Microsoft SQL Server tidak diterapkan dengan cara ini. … Pengujian Microsoft telah menunjukkan bahwa kinerja aplikasi SQL Server berbasis ODBC dan berbasis DB-Library hampir sama.

Menurut Oracle, driver ODBC mereka, rata-rata, hanya berjalan sekitar 3% lebih lambat daripada akses Oracle asli. Namun driver ODBC mereka mungkin bukan milik Anda, dan jarak tempuh Anda akan bervariasi.

Pengguna kami sering bertanya kapan lebih baik menggunakan ODBC atau pendekatan flat-file off-line untuk penanganan data — yang IRI paling dikenal — selama operasi database yang sangat besar (VLDB) seperti:

  • ETL (ekstraksi, transformasi, dan pemuatan)
  • reorganisasi offline
  • migrasi dan replikasi
  • penyembunyian data
  • pengujian pembuatan/populasi data 

Jawaban umum kami adalah bahwa volume data harus menentukan paradigma perpindahan data. Kami mulai menguji saran tersebut dengan tolok ukur populasi (pemuatan) database sederhana.

Membandingkan Dua Paradigma

Perhatikan bahwa di sini kita hanya melihat ODBC vs. massal, pergerakan data berbasis file, dan bukan JDBC atau cara lain untuk mendistribusikan data, seperti Hadoop. Kami juga tidak mempertimbangkan cara lain yang disebut-sebut untuk meningkatkan akuisisi data, seperti NoSQL, atau pengiriman, seperti Teradata FastLoad.


ODBC (Konektivitas Basis Data Terbuka)

ODBC menyediakan cara bagi program klien untuk dengan mudah mengakses berbagai database dan sumber data yang kompatibel dengan ODBC.

ODBC menyelesaikan independensi DBMS dengan menggunakan driver ODBC sebagai lapisan terjemahan antara aplikasi dan DBMS. Aplikasi menggunakan fungsi ODBC melalui manajer driver ODBC yang terhubung dengannya, dan driver meneruskan kueri atau perintah pembaruan ke DBMS.

Untuk mengisi tabel melalui ODBC di perangkat lunak IRI seperti program CoSort SortCL, tentukan jenis proses keluaran sebagai ODBC. Contoh kolom penargetan skrip dalam tabel, bukan file atau prosedur, mungkin berisi tata letak ini:

/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)

Perilaku populasi ODBC default di SortCL dalam tugas untuk:IRI CoSort (transformasi massal dan penyortiran pra-muat), IRI NextForm (migrasi &replikasi DB), IRI FieldShield (penyembunyian &enkripsi data DB), IRI RowGen (pembuatan data pengujian DB) , atau IRI Voracity (semua di atas) adalah /APPEND, yang menambahkan baris ke tabel yang ada. Opsi tambahannya adalah /CREATE, untuk penyisipan terpotong dan penuh, dan /UPDATE untuk penyisipan selektif.


SQL*Loader 

SQL*Loader adalah utilitas database Oracle yang memuat data dari file eksternal (flat) ke tabel yang sudah ada di sistem yang sama atau di seluruh jaringan. SQL*Loader mendukung berbagai format tabel target, dan dapat menangani pemuatan tabel selektif dan multipel.

Data dapat dimuat dari file teks apa pun dan dimasukkan ke dalam database. Seseorang dapat memuat tabel secara massal dari shell menggunakan perintah sqlldr (sqlload pada beberapa platform). Jalankan tanpa argumen untuk mendapatkan daftar parameter yang tersedia.

Dalam skenario IRI ETL dan penyusunan ulang di mana data flat-file diurutkan sebelumnya pada kunci indeks terpanjang dari tabel target, sintaks perintah muat adalah:

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

di mana file .ctl loader control berisi:

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}")

Grafik di bawah membandingkan waktu rata-rata yang diperlukan Oracle XE 11gR2 di server Windows untuk diisi dengan lima file berbeda yang telah diurutkan sebelumnya menggunakan penyisipan ODBC dan SQL*Loader:

# Catatan Populasi DB melalui SQL*Loader Populasi DB melalui ODBC
2,5 juta 10,25 detik 58,25 detik
2 juta 6,25 detik 24,25 detik
1 juta 5,25 detik 11,5 detik
1/2 juta 4 detik 5,5 detik
1/4 juta 2,75 detik 4,25 detik

Kesimpulan untuk Pengguna IRI

Kami menemukan bahwa pengguna IRI FieldShield biasanya baik-baik saja dengan ODBC karena lebih nyaman dan cukup cepat untuk penyembunyian data dinamis dan penyembunyian data statis tabel dengan kurang dari satu juta baris. Hal yang sama berlaku untuk pemetaan data, federasi, atau operasi pelaporan yang tidak terlalu besar di IRI CoSort atau IRI NextForm.

Namun, untuk operasi ETL dan reorg massal di IRI Voracity, yang terus berfungsi paling baik adalah komponen yang didukung berikut:

  1. FAKTA IRI (Ekstrak Cepat) untuk pembongkaran menggunakan driver asli seperti OCI
  2. IRI CoSort untuk transformasi big data dan penyortiran pra-muat [atau IRI RowGen untuk pengurutan, pembuatan data pengujian yang benar secara referensi]
  3. Utilitas pemuatan DB Anda untuk pemuatan jalur massal dan langsung

Sangat malu dengan paradigma yang rumit dan mahal seperti NoSQL dan Hadoop — metode flat-file yang tepercaya masih merupakan cara yang harus dilakukan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Model Basis Data untuk Platform MOOC

  2. Hekaton dengan twist:TVP dalam memori – Bagian 2

  3. Cara Membuat Kunci Utama di SQL

  4. Pernyataan SQL INSERT INTO

  5. Cara Mengganti Nama Kolom di SQL