.NET -Treiber für Yandex Clickhouse. Dieser Treiber implementiert natives Clickhouse -Protokoll, das schamlos aus Original -Klickhouse -Quellen herausgerissen wird. In gewisser Weise entspricht es nicht den ado.net -Regeln, dies ist jedoch beabsichtigt.
А щё е е о писание п рсски, с &O. ниже.
V.2.0.5: Unterstützung für Kartenspalten (dank @jorgeparavicini). Provisorische Unterstützung für JSON -Spalten. Fall-unempfindliche Verbindungszeichenfolgen.
V.2.0.4: Die feste Verbindung wird nach einem wiederherstellbaren Fehler unbrauchbar.
V.2.0.3: Unterstützung für INSERT ... SETTINGS setting=value .
V.2.0.2.1 und V.2.0.2.2: Net461 Ziel und k4os.compression.lz4 -Anforderung dafür hinzugefügt.
V.2.0.2: Umgeschaltet zu Async IO, implementiertes System. Unterstützung für IPv4- und IPv6 -Spalten hinzugefügt.
V.1.5.6-NO-POLLING-ON-TLS: Backportierte Änderungen ab 2.0.3.
V.1.5.5-NO-POLLING-ON-TLS: Patch ein Fehler, der verhindern, dass SSL/TLS-gesicherte Verbindungen ordnungsgemäß funktionieren.
V.1.5.5: Unterstützung für den Bool -Typ hinzugefügt.
V.1.5.3: Fehler behoben, die leere Arrays lesen.
V.1.5.2: Support für Datum32 -Typ hinzugefügt.
V.1.5.1: Einführte neue Möglichkeit, Tuple -Typ von Clickhouse zu verarbeiten. Jetzt werden Werte als System.Tuple<> anstelle von System.Object[] gelesen. Diese Änderung ermöglichte es möglich, die typisierten Werte von Array(Tuple(...)) zu lesen.
V.1.4.0: Analyse der Analyse von Abfragen, wenn Werte entkommen sind.
V.1.3.1: Unterstützung für den Typ mit niedriger Kardinalität. Erweiterte Unterstützung für Dezimalarts.
V.1.2.6: Support für TimeZones (ziemlich begrenzt).
Um Ihre Clickhouse -Verbindung in den SSL/TLS -Tunnel zu wickeln, sollten Sie zuerst auf Ihrem Server aktiviert werden ( tcp_port_secure -Einstellung in der config.xml) und der Verbindungszeichenfolge Encrypt=True hinzufügen (vergessen Sie nicht, die Portnummer zu ändern).
SSL/TLS funktionierte vor 1.5.5 nicht ordnungsgemäß und führte zu unendlichen Wartezeiten, bis Daten eintreffen. Es wurde in der Version 1.5.5-NO-POLLING-on-TLS-Version "gepatcht" und in 2.x+vollständig gemindert.
Wenn Sie alle vom Treiber zum Server emittierten Abfragen sehen möchten, fügen Sie der Verbindungszeichenfolge Trace=True hinzu und richten Sie einen .NET Trace -Listener für das Kategorie ClickHouse.Ado ein.
Click House Engine unterstützt nicht die Parsen mehrerer Abfragen gemäß IDbCommand.Execute* RoundTrip. Bitte teilen Sie Ihre Fragen in separat ausgeführte Befehle auf.
Obwohl Sie vielleicht glauben, dass NextResult aufgrund des oben genannten Mangels an mehreren Abfragen -Unterstützung nicht verwendet wird, ist dies völlig falsch! Sie müssen NextResult immer als Clickhouse -Protokoll und Engine May verwenden und werden mehrere Ergebnisse pro Abfrage zurückgeben, und manchmal können Ergebnisschemata abweichen (definitiv in Bezug auf die Feldreihenfolge, wenn die Abfrage es nicht explizit angibt).
Wenn Sie die Dokumentation der Clickhouse lesen, rät es Ihnen dringend, Datensätze in großen Mengen einzufügen (1000+ pro Anfrage). Dieser Treiber kann Masseneinsätze ausführen. Dazu müssen Sie eine spezielle Einfügungssyntax verwenden:
INSERT INTO some_table (col1, col2, col3) VALUES @bulk Und danach müssen Sie parameted named bulk mit seinem Value zu IEnumerable hinzufügen. Jedes Element muss auch IEnumerable sein. Leere Listen sind nicht erlaubt. Alternativ können Sie die Implementierung IBulkInsertEnumerable als bulk übergeben, um die Verarbeitung zu beschleunigen und in dem Clickhouse -Treiber weniger Speicher zu verwenden. Dies kann mit der folgenden Syntax überzeugt werden:
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 ( ) ; Wenn Sie einige Fehler behoben oder nützliche Ergänzung zu diesem Treiber geschrieben haben, ziehen Sie sie bitte hier an.
Wenn Sie eine Funktionalität benötigen oder einen Fehler gefunden haben, dies jedoch nicht implementieren/beheben können, stellen Sie hier ein Ticket auf GitHub ein.
.NET драйвер дustr yandex klickhouse. О отличches о о о о фициально neben jdbc клиента этот дwor Протокол (и части ео реализациabe) нагло ыдраны з и иходникоches с моake Clickhouse. В некоторых слчаях ээтот драйвер ведёё себя не так, как о ычныы ado.net драййeder, эээзанches н & м мkunft н & мoge н & р мkunft н & мoge н & рoge н & р мkunft н & рoge н & р мkunft сацикой Clickhouse.
V.2.0.5: подержжа Map колонок (с @jorgeparavicini). Предварительная подержка JSON колонок. Строки соеauber
V.2.0.4: исравлена полfolgen са соединения после юбой, даже востанови & м шибки.
V.2.0.3: добавлена подержка подвыражения SETTINGS в SQL к мандах INSERT .
V.2.0.2.1 и v.2.0.2.2: добавлена цель net461 и д дUNG н н с жено тебоваfltz4.
v.2.0.2: перех und н на асинхроный в д/ыыод, реализches ция в &кого System.data.Common, тисле DbProviderfactory. "
V.1.5.6-No-Polling-on-TLS: экпортированы з & ззнененененене Hand з 2.0.3.
V.1.5.5-No-Polling-on-TLS: "испавлен" ба с поисания & м на соинененененене Ende и иоозззющих SSL/TLS.
V.1.5.5: добавлена подержка тizin. Bool.
v.1.5.3: исччавлена ошибка чтения пс & массizin.
V.1.5.2: добавлена подержка тβ Datum32.
V.1.5.1. Зз Tuple unktion ф ф & мат чтения/записи CLICKHOUSE тβ TUPLE. Теерь значения читаюются System.Object[] System.Tuple<> Array(Tuple(...))
v.1.4.0: иапаааsol о о значения & iges запароащи & эранированые синые сizin си & сeicht
V.1.3.1: добавлена подержка тβ lowcardinality. Улчшчшена работа с тпааesse dezimal.
V.1.2.6: добавлена ораниченная подержка вренных зон.
tcp_port_secure и, затеgst, добавить Encrypt=True с с забыы п п п поооззез ноыоооооо ноооооо момоооо & по пооооттооооооооооооооооооооооооооотттттт & п пор & iges пор & р пор & iges пор & рор & р пор & iges пор & рор & iges пор & рор & рор & iges пор & рор & р пр & рор & рр & р пkunft).
До версиabe 1.5.5-no-popping-on-tls ssl/tls В 1.5.5-no-popping-on-tls это ыыло "исправлeicht", und в в в в ии х+ полностюю устраненоно.
Е & х ххется видеть какие sql драййе посыыыае серверу, т т вштии & тles ттти & тles ттт & тт & ьles ттт & тт & тles т & тт & тles ттт & тт & тles тт & тт & тles т & тл & тles тт & тл & тles тт & т т & тles лт & тл & prüft TRACE Trace=True TRACK = т тасссировey дUN катеver ри ClickHouse.Ado .
Движок klickhouse не у уеет обрабатыыать несколько sql запросов за оин · ызовызов IDbCommand.Execute* . "
В сязи NextResult ыш ышесказаныы м жет поазаться чч м не нжен, н н это с вершенно не так. Исоззззззание NextResult обательно , поскольку протокол и движж Clickhouse мжет и бо & н & н & iges н & ко & но & но & но & но & но & но & но & kunft н & ко & kunft один зааsol, и ххж т т т т хх ы э э э э н наallen е & запрос не имет явног уазания порядка).
В докум & unktion Clickhouse указано, что втав abl. Feb. ДUN эээээо прeicht
INSERT INTO some_table (col1, col2, col3) VALUES @bulk IEnumerable эээээ паанды Value задать пааkunft bulk т IEnumerable К о bulk т IBulkInsertEnumerable т п качестве значения паралfolgen Bulk перeicht пatur цессора внутри драййера klickhouse. »
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 ( ) ; Е & бл ы и и и & равили баг или реализовали какюю-ünes фичч, пожалййста, сделайsprechisches Anfrage ээээ & рпззиторhaltung.
Е & м н н ххатает какой-тт фнкци или н нашли ба, котототорый н е мжжтте & кeicht зттт & тт & тт & тт & тт & тт & тт & ттт & ттт & тт & тт & тт & тт & ттт & тт & ттт & ттт & тт & ттт & ттт & тeicht