News & Events

Python Driver 2.6.0 with Cassandra 2.2 Features

Published on August 12, 2020

Kebijakan Load Balancing Default Token-Aware

Rilis ini menyertakan perubahan pada kebijakan load balancing default yang digunakan oleh driver. Kebijakan teknik load balancing digunakan untuk merencanakan urutan percobaan node untuk setiap kueri. Default baru menggunakan kebijakan bertingkat yang peka terhadap token dan pusat data. Token awareness memungkinkannya untuk mengarahkan permintaan secara langsung ke node yang menyimpan replika data (mungkin menghindari lompatan ekstra). Kesadaran pusat data membuat pengemudi mempertimbangkan node dari DC lokal sebelum yang lain.

Python Driver 2.6.0 with Cassandra 2.2 Features

Secara default, DC 'lokal' dipilih dari titik kontak Cluster, jadi titik kontak harus untuk node lokal ke instance client . Jika Anda menentukan titik kontak dari lebih dari satu DC, Anda perlu menentukan DC lokal dengan menginisialisasi kebijakan secara eksplisit melalui Cluster load_balancing_policy Anda.

Ini bukan kebijakan baru, hanya default baru. Perubahan tersebut dilakukan untuk memanfaatkan fitur yang lebih canggih di luar kotak, dan untuk menjadikan default ini sejalan dengan driver kami yang lain. Jika Anda sudah menentukan kebijakan load balancing secara eksplisit, perubahan ini tidak akan berpengaruh.

Versi Protokol Default Baru, Penurunan Versi Otomatis

Versi protokol default sekarang 4 (sebelumnya 2). Ini dilakukan untuk menghindari kebingungan saat menggunakan default dengan fitur protokol yang lebih baru.

Bersamaan dengan ini, driver sekarang mendukung versi protokol downgrade saat menghubungkan ke versi Cassandra yang lebih lama. Penurunan versi protokol ini hanya terjadi selama koneksi cluster awal, ketika koneksi kontrol sedang dibuat. Sebagian besar adalah fitur kenyamanan untuk memungkinkan penggunaan default driver untuk versi Cassandra apa pun. Aplikasi produksi harus menetapkan versi protokol secara eksplisit ke versi yang didukung oleh cluster mereka. Ini lebih efisien (menghindari penurunan versi protokol), dan juga akan menghindari status terdegradasi jika klien pernah terhubung ke kluster yang ditingkatkan sebagian yang mendukung versi campuran.

Hubungkan Konfigurasi Timeout

Sebelumnya tidak ada cara mudah untuk mengatur waktu tunggu untuk membuat koneksi baru. Rilis ini menyertakan parameter konfigurasi cluster baru connect timeout.

Batas waktu default adalah 5 detik. Ini tidak hanya mencakup pembentukan TCP, tetapi juga negosiasi startup seperti pertukaran opsi, negosiasi protokol, dan otentikasi.

Pembaruan API Pembaruan Skema Cluster

Cluster. refresh_schema dan Cluster. submit_schema_refresh sekarang tidak digunakan lagi. Karena elemen skema baru di luar ruang kunci dan tabel (tipe pengguna, fungsi, agregat), API menjadi sulit digunakan. Daripada terus menjelaskan dan menerapkan berbagai kombinasi parameter opsional, API ini sudah tidak digunakan lagi karena mendukung panggilan khusus untuk setiap entitas skema.

Sekarang, Cluster.refresh_schema_metadata digunakan untuk menyegarkan semuanya dari database. Entitas lain disegarkan menggunakan salah satu metode:

  • refresh_keyspace_metadata
  • refresh_table_metadata
  • refresh_user_type_metadata
  • refresh_user_function_metadata
  • refresh_user_aggregate_metadata

Pengemudi masih menyegarkan entitas ini secara otomatis berdasarkan peristiwa perubahan skema dari server. Fungsi-fungsi ini berguna ketika driver dikonfigurasi untuk mengabaikan kejadian tersebut, dan penyegaran dilakukan secara ad hoc oleh aplikasi.

Bedakan Antara Nilai NULL dan UNSET

Cassandra 2.2 menambahkan kemampuan untuk membedakan antara parameter null dan unset di protokol asli v4. Ini merupakan peningkatan besar karena memungkinkan pengikatan kombinasi parameter apa pun dalam pernyataan yang disiapkan (seperti yang Anda harapkan, kolom kunci partisi masih diperlukan).

Dengan versi protokol sebelumnya, saat menggunakan pernyataan yang sudah disiapkan, Anda harus mengikat semua parameternya atau mendapatkan kesalahan. Dikombinasikan dengan fakta bahwa memasukkan nilai null menghasilkan pembuatan batu nisan, hal ini dapat menyebabkan lebih banyak pernyataan siap yang diperlukan dalam aplikasi.

Saat menggunakan protokol v4 +, driver sekarang akan secara implisit mengeset nilai yang hilang menjadi tidak disetel (selama nilai yang hilang bukan bagian dari kunci partisi). Aplikasi juga dapat secara eksplisit memberikan nilai yang tidak disetel menggunakan cassandra.query.UNSET_VALUE.

Misalnya, menggunakan pengikatan posisi:

  1. dari cassandra.query import UNSET_VALUE
  2. ps = session.prepare ('INSERT INTO test (key, v0, v1) VALUES (?,?,?)')
  3. session.execute (ps, (0, 1)) # v1 secara implisit tidak disetel
  4. session.execute (ps, (0, UNSET_VALUE, 2)) # v0 secara eksplisit tidak disetel

Harap dicatat bahwa saat menggunakan versi protokol sebelumnya, driver akan mengembalikan perilaku ini dan parameter yang tidak ditentukan akan mengakibatkan kesalahan.

Peringatan Klien dari Server

Cassandra 2.2 menambahkan peringatan klien ke protokol asli v4, sebagai cara untuk menampilkan peringatan ke klien yang mungkin tidak memiliki akses ke log server. Contohnya mencakup mencapai ambang batas seperti batch_size_warn_threshold_in_kb dan tombstone_warn_threshold saat menjalankan permintaan client.

Setiap peringatan yang diterima oleh pengemudi dicatat tanpa syarat melalui cassandra.protocol. Peringatan juga dilampirkan ke respons permintaan di masa mendatang untuk akses terprogram.

Jenis CQL smallint, tinyint baru

Cassandra 2.2 memperkenalkan dua tipe integer baru: smallint dan tinyint. Rilis driver ini menyertakan dukungan inti untuk jenis ini (semantik sama dengan bilangan bulat bertanda lainnya, tetapi dengan rentang yang berbeda). Jenis ini juga didukung dalam model kolom pemeta cqlengine SmallInt dan TinyInt.

Jenis CQL tanggal dan waktu baru

Cassandra 2.2 juga memperkenalkan tipe tanggal dan waktu sederhana yang baru. Rilis driver ini menambahkan dukungan untuk tipe ini ke cqlengine dalam bentuk tipe kolom Tanggal dan Waktu. Melakukan hal ini juga menghapus kelebihan Tanggal yang sebelumnya tidak digunakan lagi, yang menggunakan CQL stempel waktu di bawah sampul dan hanya memotong komponen waktu pada masukan. Pengguna ini dapat mengubah model mereka untuk menggunakan DateTime dan menggunakan datetime.date sebagai input.

Fungsi yang Ditentukan Pengguna dan Model Metadata Agregat

Cassandra 2.2 menambahkan Fungsi dan Agregat yang Ditentukan Pengguna ke server. Bekerja dengan ini di CQL transparan bagi pengemudi. Satu pengemudi berubah

terkait dengan fungsi dan agregat adalah menambahkan entitas ini ke kueri dan model metadata. Model dapat diakses melalui fungsi dan agregat

atribut dari metadata keyspace.

Platform dan Survei Waktu Proses

Kami meminta masukan dari pengguna kami terkait platform dan lingkungan runtime tempat driver digunakan. Jika Anda belum melakukannya (atau jika lingkungan Anda berubah), kami sangat menghargai masukan Anda pada survei platform dan waktu proses kami.

Sumber: Datastax

PT Strategic Partner Solution

  The Bellezza Shopping Arcade
    2nd Floor Unit SA15-16
    Jl. Arteri Permata Hijau, Kec. Kby. Lama
    DKI Jakarta 12210
  +62 812 8700 0879
  info@myspsolution.com

NETWORKING

Bandung

  Jl. Jend. Sudirman No. 757
    Bandung 40212
(62-22) 603 0590 (Hunting)
(62-22) 603 0967

Medan

  Kawasan Industri Medan Star
    Jl. Pelita Raya I Blok F No. 5
    Tanjung Morawa Km 19,2
    Deli Serdang 20362
  (62-61) 7940800
  (62-61) 7941990

Semarang

  Jl. Tambak Aji I / 6
    Komp. Industri Guna Mekar
    Semarang 50185
  (62-24) 866 3521
  (62-24) 866 3529

Surabaya

  Jl. Ngemplak No. 30
    Komplek Ambengan Plaza
    Blok B 35-37
    Surabaya 60272
  (62-31) 531 9635 (Hunting)
  (62-31) 531 9634

Lampung

  Perumahan Gunung Madu Plantation
    Jalan Pulau Morotai Blok B No. 1
    Kecamatan Sukarame - Tanjung Baru
    Bandar Lampung

Surakarta

  Jalan Melati No. 2,
    Kelurahan Purwosari
    Laweyan, Surakarta

Palembang

  Komplek Ilir Barat Permai
    Blok D.I. No. 31
    Kelurahan 24 Ilir, Palembang

Samarinda

  Jalan Ir. Sutami, Pergudangan Tahap II
    Blok S No.3B
    Karang Asam, Samarinda

Makassar

  Jalan Ir. Sutami,
    Komplek Pergudangan Parangloe Indah
    Blok C-II 3/6, Makassar

Pontianak

  Jalan Raya Wajok Hilir Km. 15,65
    Siantan, Pontianak