sql >> Database >  >> RDS >> Oracle

Verbinding maken met Oracle in go

Mocht je nog interesse hebben, ik werk nu al een paar maanden met Go en Oracle op Windows. Mijn favoriete coureur tot nu toe is go-oci8. Het is veel sneller dan goracle en lijkt actiever te zijn.

Sommige van onze applicaties moeten worden geïmplementeerd op computers waartoe we geen toegang hebben. Beide native SQL-stuurprogramma's worden met de applicatie gecompileerd zonder dat er enige externe configuratie nodig is, dus dat is een enorm pluspunt. De computer heeft nog steeds de Oracle-client nodig, maar dat is de enige externe afhankelijkheid.

Ik zal niet zeggen dat go-oci8 al klaar is voor productie, maar het is stabiel genoeg als je de beperkingen kent. Een voorbeeld is dat het in paniek raakt wanneer het tegelijkertijd op meerdere goroutines draait, dus als je dat nodig hebt, wil je misschien een mutex gebruiken.

Ik heb in principe deze tutorial gevolgd om het te installeren:https://gist.github.com/mnadel/8678269

Het lastigste was om oci8.pc correct te maken. De mijne is:

prefix=/devel/target/1.0
exec_prefix=${prefix}
libdir=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
includedir=C:/oracle/instantclient_12_1_64/sdk/include
oralib=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
orainclude=C:/oracle/instantclient_12_1_64/sdk/include
gcclib=c:/MinGW_64/mingw64/lib
gccinclude=c:/MinGW_64/mingw64/lib
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Version: 12.1
Description: oci8 library
Libs: -L${oralib} -L${gcclib} -loci
Libs.private:
Cflags: -I${orainclude} -I${gccinclude}

Sommige dingen zijn misschien overbodig, ik zou kunnen proberen het te verbeteren op een schone machine.

Een belangrijk ding om in gedachten te houden is dat je dezelfde architectuur moet gebruiken voor Go en de Oracle-client. Wil je dus de 64 bit versie van Go gebruiken, dan heb je ook de 64 bit versie van Oracle nodig. Ik heb zowel 32- als 64-bits versies van beide, en hoewel 64-bits mijn standaard is, gebruik ik bat-bestanden om de benodigde paden en omgevingsvariabelen te wijzigen wanneer ik een 32-bits versie moet bouwen.

Het is misschien de moeite waard om wat tijd te investeren om het te laten werken, je zult waarschijnlijk veel betere prestaties krijgen dan het gebruik van ODBC. Ik heb het gebruikt met een enigszins hoog datavolume (query's die 5+ miljoen rijen ophalen) en het werkt erg goed.




  1. Fout bij het uitvoeren van mvn sql:execute

  2. Mysql-query om te bepalen of de opgegeven datetime is opgenomen in het datetime-interval

  3. Hoe SQL Server op Linux te installeren

  4. Elk item dat uit de SQLite-database is opgehaald, instellen in een eigen tekstweergave