Tüm Ürünler
Search
Belge Merkezi

Lindorm:LindormTSDB HTTP tabanlı SQL API'sini kullanma

Son Güncelleme:Oct 07, 2026

LindormTSDB, HTTP POST üzerinden standart SQL deyimlerini kabul eden HTTP tabanlı bir SQL API sunar. Bu API'yi kullanarak veritabanları ve zaman serisi tabloları oluşturabilir, veri yazabilir ve istemci kitaplığı yüklemeden herhangi bir Java dışı uygulamadan sorgu çalıştırabilirsiniz.

Not

Java uygulamaları için bunun yerine JDBC sürücüsünü kullanın. Tek düğümlü Lindorm örnekleri HTTP tabanlı SQL API'sini desteklemez.

Nasıl çalışır

Tüm istekler HTTP POST kullanarak tek bir uç noktaya gider. SQL deyimi istek gövdesinde yer alır. API JSON yanıtı döndürür.

POST /api/v2/sql   (port 8242)

SELECT dahil tüm deyim türleri için POST yöntemi gereklidir.

Kimlik doğrulama etkinleştirilmişse Basic Authentication üstbilgisi ekleyin. İsteğe bağlı olarak, hedef veritabanını ayarlamak veya büyük sonuç kümelerini parçalar halinde akışa almak için sorgu parametreleri iletebilirsiniz.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Bir LindormTSDB örnek uç noktası (biçim: ld-<instance-id>-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242)

  • Uç noktada 8242 bağlantı noktasına ağ erişimi

  • (Kimlik doğrulama etkinleştirilmişse) Geçerli bir kullanıcı adı ve parola

İstek gönderme

Uç nokta

Yol Yöntem Açıklama
/api/v2/sql POST Bir SQL deyimi yürütür

İstek biçimi

SQL deyimini istek gövdesine dahil edin. İstek üstbilgisinde Content-Type: text/plain değerini ayarlayın.

Önemli

SQL deyimlerini noktalı virgülle (;) sonlandırmayın. LindormTSDB dahili olarak SQL-92 deyim sonlandırıcıları olarak noktalı virgülleri desteklese de isteğin gövdesine noktalı virgül eklemek hataya neden olur.

Sorgu parametreleri

Parametre Açıklama Varsayılan
database SQL deyiminin çalıştırılacağı veritabanı. Deyim bir veritabanı belirtmezse LindormTSDB bu veritabanında arama yapar. default
chunked Sonuç kümesini birden çok JSON bloğu halinde akışa almak için true olarak ayarlayın. Tüm sonuç kümesinin bellekte arabelleklenmesini önlemek amacıyla çok sayıda satır döndüren sorgular için bu seçeneği kullanın. false
chunk_size JSON bloğu başına maksimum satır sayısı. Yalnızca chunked=true olduğunda etkili olur. 1000

Kimlik doğrulama

Kullanıcı kimlik doğrulaması etkinleştirilmişse Basic Authentication kullanarak bir Authorization üstbilgisi ekleyin:

Authorization: Basic <Base64-encoded credentials>

Base64 kodlu kimlik bilgileri, iki nokta üst üste işaretiyle birleştirilen kullanıcı adı ve paroladan oluşur: username:password.

Örneğin, varsayılan kimlik bilgileri (root:root) şu şekilde kodlanır:

Authorization: Basic cm9vdDpyb290

Dile özel kodlama için programlama dilinizin Base64 kitaplığı belgelerine bakın.

Örnekler

Aşağıdaki örnekler curl kullanır ve tam iş akışını kapsar: veritabanı oluşturma, zaman serisi tablosu oluşturma, veri ekleme ve veri sorgulama.

Önemli

İstek gövdesindeki SQL deyimlerini noktalı virgülle (;) sonlandırmayın. Bu durum istek hatasına neden olur.

Veritabanı oluşturma

curl -i -X POST \
  http://ld-xxxxxxxxx-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/api/v2/sql \
  -d 'CREATE DATABASE DB1'

Başarılı bir yanıt HTTP 200 döndürür.

Zaman serisi tablosu oluşturma

Hedef veritabanını sorgu parametresi olarak iletebilir veya tablo adını veritabanı adı ile niteleyebilirsiniz. Aşağıdaki iki deyim de aynı tabloyu oluşturur:

# Using the database query parameter
curl -i -X POST \
  "http://ld-xxxxxxxxx-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/api/v2/sql?database=DB1" \
  -d 'CREATE TABLE SENSOR (device_id VARCHAR TAG, region VARCHAR TAG, time TIMESTAMP, temperature DOUBLE, humidity DOUBLE)'
# Using a fully qualified table name
curl -i -X POST \
  http://ld-xxxxxxxxx-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/api/v2/sql \
  -d 'CREATE TABLE DB1.SENSOR (device_id VARCHAR TAG, region VARCHAR TAG, time TIMESTAMP, temperature DOUBLE, humidity DOUBLE)'

Kimlik doğrulama ile veri sorgulama

Kimlik bilgilerini iletmek için -u username:password kullanın. Kullanıcının tablo üzerinde gerekli izinlere sahip olduğundan emin olun.

curl -i -X POST \
  -u tsdbuser:password \
  "http://ld-xxxxxxxxx-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/api/v2/sql?database=DB1" \
  -d 'SELECT device_id, region, time, MAX(temperature) as max_t FROM SENSOR WHERE time >= 1619076780000 AND time <= 1619076800000 SAMPLE BY 20s'

Başarılı bir yanıt, sonuç kümesiyle birlikte HTTP 200 döndürür:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "columns": ["device_id", "region", "time", "max_t"],
  "metadata": ["VARCHAR", "VARCHAR", "TIMESTAMP", "DOUBLE"],
  "rows": [
    ["<device_id_value>", "<region_value>", "<timestamp_value>", <numeric_value>],
    ...
  ]
}

Geçersiz bir SQL deyimi, hata gövdesiyle birlikte HTTP 400 döndürür:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "code": <error_code>,
  "sqlstate": "<sql_state_code>",
  "message": "<error_message>"
}

Hata kodlarının tam listesi için bkz. Yaygın hata kodları.

Yanıt parametreleri

Başarılı yanıt (HTTP 200)

Parametre Tür Açıklama
columns Dize dizisi Sonuç kümesindeki sütun adları
metadata Dize dizisi Her sütunun veri türleri. Desteklenen türler için bkz. Veri türleri.
rows Dizi dizisi Her iç dizi, columns değerlerine karşılık gelen değerlerle bir satırı temsil eder

Hata yanıtı (HTTP 400)

Parametre Tür Açıklama
code int Hata kodu
sqlstate String SQL durum kodu
message String Hata mesajı

Python örneği

Aşağıdaki örnekte requests kitaplığı kullanılarak bir tablo oluşturulur, satırlar eklenir ve bir sorgu çalıştırılır.

Zaman serisi tablosu oluşturma

import requests

endpoint = "http://ld-bp1s0vbu8955w****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/api/v2/sql"

sql = """CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
)"""
r = requests.post(endpoint, sql)
print(r.status_code, r.content)

Veri ekleme

sql = """INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES
    ('F07A1260', 'north-cn', '2021-04-22 15:33:00', 12.1, 45),
    ('F07A1260', 'north-cn', '2021-04-22 15:33:10', 13.2, 47),
    ('F07A1260', 'north-cn', '2021-04-22 15:33:20', 10.6, 46),
    ('F07A1261', 'south-cn', '2021-04-22 15:33:00', 18.1, 44),
    ('F07A1261', 'south-cn', '2021-04-22 15:33:10', 19.7, 44)"""
r = requests.post(endpoint, sql)
print(r.status_code, r.content)

Veri sorgulama

r = requests.post(endpoint, "SELECT * FROM sensor")
print(r.status_code, r.content)

Sonraki adımlar