Yandex Clickhouse 용 .NET 드라이버. 이 드라이버는 원래 클릭 하우스 소스에서 뻔뻔스럽게 찢어진 기본 클릭 하우스 프로토콜을 구현합니다. 어떤면에서는 ADO.NET 규칙을 준수하지는 않지만 이는 의도적입니다.
а ее есть описание по-русски, см. m.
v.2.0.5 :지도 열 지원 (@jorgeparavicini 덕분). JSON 열에 대한 잠정 지원. 사례에 민감한 연결 문자열.
v.2.0.4 : 복구 가능한 오류 후 고정 연결이 사용할 수 없게됩니다.
v.2.0.3 : INSERT ... SETTINGS setting=value 구문.
v.2.0.2.1 및 v.2.0.2.2 : Net461 목표를 추가하고 K4OS.compression.lz4 요구 사항을 다운 그레이드했습니다.
v.2.0.2 : Async IO, 구현 된 System.data.common과 같은 Common과 같은 Async IO로 전환되었습니다. IPv4 및 IPv6 열에 대한 지원이 추가되었습니다.
v.1.5.6-no-polling-on-tls : 2.0.3에서 백 포트 변경.
v.1.5.5-no-polling-on-TLS : SSL/TLS가 제대로 작동하는 것을 방지하는 버그를 패치했습니다.
v.1.5.5 : bool 유형에 대한 지원이 추가되었습니다.
v.1.5.3 : 빈 배열을 읽는 고정 오류.
v.1.5.2 : 날짜 32 유형에 대한 지원이 추가되었습니다.
v.1.5.1 : Clickhouse의 Tuple 유형을 처리하는 새로운 방법을 소개했습니다. 이제 값은 System.Object System.Object[] 대신 System.Tuple<> 으로 읽습니다. 그 변화로 인해 Array(Tuple(...)) 유형 값을 읽을 수있었습니다.
v.1.4.0 : 값이 피할 때 고정 쿼리 구문 분석.
v.1.3.1 : 낮은 카디 레탈 유형에 대한 지원이 추가되었습니다. 소수 유형에 대한 확장 된 지원.
v.1.2.6 : 타임 존에 대한 추가 (제한된) 지원.
SSL/TLS 터널에서 클릭 하우스 연결을 래핑하려면 서버에 먼저 활성화해야합니다 (config.xml의 tcp_port_secure 설정)에 연결 문자열에 Encrypt=True (포트 번호를 변경하는 것을 잊지 마십시오).
SSL/TLS는 1.5.5 이전에 제대로 작동하지 않았으며 데이터가 도착할 때까지 무한한 대기로 이어졌습니다. 1.5.5-No-Polling-on-TLS 버전으로 '패치'되었으며 2.x+로 완전히 완화되었습니다.
드라이버가 서버로 방출 한 모든 쿼리를 보려면 Connection String에 Trace=True 를 추가하고 ClickHouse.Ado 범주에 대한 .NET 트레이스 리스너를 설정하십시오.
Clickhouse Engine은 IDbCommand.Execute* 에서 여러 쿼리를 구문 분석하는 데 도움이되지 않습니다. 쿼리를 별도로 실행 된 명령으로 분할하십시오.
비록 당신은 앞서 언급 한 다중 쿼리 지원 부족으로 인해 NextResult 사용되지 않을 것이라고 생각할 수도 있습니다! 클릭 하우스 프로토콜 및 엔진은 항상 NextResult 사용해야하며 쿼리 당 여러 결과 세트를 반환 해야하며 언젠가 결과 스키마가 다를 수 있습니다 (쿼리가 명시 적으로 지정하지 않으면 필드 순서와 관련하여).
클릭 하우스 문서를 읽으면 대량 (요청 당 1000+)으로 레코드를 삽입하는 것이 좋습니다. 이 드라이버는 벌크 인서트를 수행 할 수 있습니다. 그렇게하려면 특수 삽입 구문을 사용해야합니다.
INSERT INTO some_table (col1, col2, col3) VALUES @bulk 그리고 그 후에는 Value 캐스트 IEnumerable 이있는 Parameted bulk 추가해야 IEnumerable . 빈 목록은 허용되지 않습니다. 또는 IBulkInsertEnumerable 구현을 bulk 값으로 전달하여 처리 속도를 높이고 클릭 하우스 드라이버 내부에서 메모리를 적게 사용할 수 있습니다. 이것은 다음 구문과 함께 편한 상태로 사용될 수 있습니다.
CREATE TABLE test ( date Date , time DateTime, str String, int UInt16) ENGINE = MergeTree( date ,( time ,str, int ), 8192 ) class MyPersistableObject : IEnumerable {
public string MyStringField ;
public DateTime MyDateField ;
public int MyIntField ;
//Count and order of returns must match column order in SQL INSERT
public IEnumerator GetEnumerator ( ) {
yield return MyDateField ;
yield return MyDateField ;
yield return MyStringField ;
yield return ( ushort ) MyIntField ;
}
}
//... somewhere elsewhere ...
var list = new List < MyPersistableObject > ( ) ;
// fill the list to insert
list . Add ( new MyPersistableObject ( ) ) ;
var command = connection . CreateCommand ( ) ;
command . CommandText = "INSERT INTO test (date,time,str,int) VALUES @bulk" ;
command . Parameters . Add ( new ClickHouseParameter {
ParameterName = "bulk" ,
Value = list
} ) ;
command . ExecuteNonQuery ( ) ; 버그를 고치 거나이 드라이버에 유용한 추가를 썼다면 여기를 다시 요청하십시오.
기능이 필요하거나 버그를 찾았지만 버그를 구현/수정할 수없는 경우 GitHub에 티켓을 제출하십시오.
.NET драрвер для YANDEX 클릭 하우스. в отлиоие от оф빙기 · фBC клиента этот драйвер является об협 Â поверх 클릭 하우스 http, ал 퍼 bатитив 울а뷰. протокол (и части его реализацции) нагло выдраны 염색 염색 염색 염색 클릭 하우스. В некотор ых случая в этот драййвер вед Âт себя не не ®, как о빌 · 풋 ado.net драйвер ы, это сделано неренно свяв 넘어집니다. спефификой 클릭 하우스.
v.2.0.5 : поддержка지도 관어 (спасибо @jorgeparavicini). предварительная поддерер이었습니다. строки соединения игнорируют регистр симолов (на 착취.
v.2.0.4 : исправлена поломка соединения после 랜바, даже восстановимой ошибки.
v.2.0.3 : добавлена подереререр이었습니다 SETTINGS INSERT .
v.2.0.2.1 и v.2.0.2.2 : добавлена цель net461 и для неё снижено требование 처세 4.
v.2.0.2 : переход на асинхронн칭 Ввод/вывод, реали다는데, rathomon, datata.common, В àисле dbproviderfactory. добавлена под, IPv6 및 IPv6.
v.1.5.6-no-polling-on-tls : б냥 портирован 말 изменения из 2.0.3.
v.1.5.5-no-polling-on-tls : "исправлен"баг совисаниями на соединения использ dan ssl/tls.
v.1.5.5 : добавлена подер жка 례 bool.
v.1.5.3 : исправлена ошибка пения пустых массивов.
v.1.5.2 : добавлена подер жка 례 date32.
v.1.5.1. именен формат чтения/з писи clickhouse 례 Tuple . 의미학 적 <> зитатся System.Tuple<> вместо используемо ранее System.Object[] . это ر Â именение позволяее은 читать колонки типа Array(Tuple(...)) , что раньше было не возможно ay-· ош응입니다.
v.1.4.0 : исправлен разбор запросов с значениями содереререререререранирован 익 요.
v.1.3.1 : добавлена подерер이었습니다. типа 로우 카디 릿. улу нена работа с типами decimal.
v.1.2.6 : добавлена ограниченная поддержка временных зон.
чтоб ы оавернуть протокол кликхауса В SSL/tls tcp_port_secure config.xml), и, затемь Encrypt=True В строку соединения (также не за 법적 혹은 сппользуемер р рор раророр 갑).
до версии 1.5.5-no-polling-on-tls ssl/tls нормально не работал и приво향 В 1.5.5-no-polling-on-tls это 개발자 "исправлено", а версия 2.х+ полностью устранено.
если иочется видеть 관어 ‡ sql драйвер 랍 серверу, 멀 в строку соединененен은 Trace=True и серен반 Â серверу, В строк 사용 ClickHouse.Ado .셨어요
двикок clickhouse не умеет обрабататывать несколько sql запросов Â один вызов IDbCommand.Execute* . з hпросп надо разбивать на отдельные коман술사.
В свя и с вышесказан칭 м ожет показаться что NextResult не нужен, не не не не Â не так. испольпование NextResult обязательно , поскольку протокол движок clickhouse может и будеет вреет врееорееово 갑골 bарорееорееорdееереет ворееорееорее은 о дин напрос, и, х 딘 Â Âе того, схем ы этих наборов могут различаться (по по краней ме ме ме ме ме ме ме ме ме мереререререререререререререререререререре짐. если иапрос не имеет явного ука 밑 밑보 порядка).
В документа칭 클릭 하우스 클릭 하우스 ука уано, ч 꺼울 для этого предусмотре 관련 специааль 변말 синтакси악 :
INSERT INTO some_table (col1, col2, col3) VALUES @bulk для для этой коман술, надо задать параметр bulk со значением 헛 Value приводи 처치질 가능, IEnumerable , к ж 효 з ж ж ж 효어 ю ж ж ж ж ю ю  ч            · Âter    ·   · ч   ther. тоже должен бь IEnumerable . кроме того, В качестве значения параметра bulk передать об ъект реализующий IBulkInsertEnumerable -этень담 исососо 울로 t. просессора внутри драйвера 클릭 하우스. это удобно при испол큘럼은 синтакси악 :
CREATE TABLE test ( date Date , time DateTime, str String, int UInt16) ENGINE = MergeTree( date ,( time ,str, int ), 8192 ) class MyPersistableObject : IEnumerable {
public string MyStringField ;
public DateTime MyDateField ;
public int MyIntField ;
//Количество и порядок return должны соответствовать количеству и порядку полей в SQL INSERT
public IEnumerator GetEnumerator ( ) {
yield return MyDateField ;
yield return MyDateField ;
yield return MyStringField ;
yield return ( ushort ) MyIntField ;
}
}
//... где-то ещё ...
var list = new List < MyPersistableObject > ( ) ;
// заполнение списка вставляемых объектов
list . Add ( new MyPersistableObject ( ) ) ;
var command = connection . CreateCommand ( ) ;
command . CommandText = "INSERT INTO test (date,time,str,int) VALUES @bulk" ;
command . Parameters . Add ( new ClickHouseParameter {
ParameterName = "bulk" ,
Value = list
} ) ;
command . ExecuteNonQuery ( ) ; если вл исправили баг или реализовали 테하십니까 ф 그리료, пожалуй ста, сдела태 요청 В этот репозиторий.
если вам не хватататает како й-ф, ф, 편재 ба 말, котор ый не можете исравить, напите 례 сессь, несut.