Introduction

ensembldb uses by default, similar to other annotation packages in Bioconductor, a SQLite database backend, i.e. annotations are retrieved from file-based SQLite databases that are provided via packages, such as the EnsDb.Hsapiens.v86 package. In addition, ensembldb allows to switch the backend from SQLite to MariaDB/MySQL and thus to retrieve annotations from a MySQL server instead. Such a setup might be useful for a lab running a well-configured MySQL server that would require installation of EnsDb databases only on the database server and not on the individual clients.

Note the code in this document is not executed during vignette generation as this would require access to a MySQL server.

Using ensembldb with a MySQL server

Installation of EnsDb databases in a MySQL server is straight forward - given that the user has write access to the server:

library(ensembldb)
## Load the EnsDb package that should be installed on the MySQL server
library(EnsDb.Hsapiens.v86)

## Call the useMySQL method providing the required credentials to create
## databases and inserting data on the MySQL server
edb_mysql <- useMySQL(EnsDb.Hsapiens.v86, host = "localhost",
                      user = "userwrite", pass = "userpass")

## Use this EnsDb object
genes(edb_mysql)

To use an EnsDb in a MySQL server without the need to install the corresponding R-package, the connection to the database can be passed to the EnsDb constructor function. With the resulting EnsDb object annotations can be retrieved from the MySQL database.

library(ensembldb)
library(RMariaDB)

## Connect to the MySQL database to list the databases.
dbcon <- dbConnect(MariaDB(), host = "localhost", user = "readonly",
                   pass = "readonly")

## List the available databases
listEnsDbs(dbcon)

## Connect to one of the databases and use that one.
dbcon <- dbConnect(MariaDB(), host = "localhost", user = "readonly",
                   pass = "readonly", dbname = "ensdb_hsapiens_v75")
edb <- EnsDb(dbcon)
edb

Session information

## R Under development (unstable) (2023-02-16 r83857)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.1 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] BiocStyle_2.27.1
## 
## loaded via a namespace (and not attached):
##  [1] vctrs_0.5.2         cli_3.6.0           knitr_1.42         
##  [4] rlang_1.0.6         xfun_0.37           stringi_1.7.12     
##  [7] purrr_1.0.1         textshaping_0.3.6   jsonlite_1.8.4     
## [10] glue_1.6.2          rprojroot_2.0.3     htmltools_0.5.4    
## [13] ragg_1.2.5          sass_0.4.5          rmarkdown_2.20     
## [16] evaluate_0.20       jquerylib_0.1.4     fastmap_1.1.0      
## [19] lifecycle_1.0.3     yaml_2.3.7          memoise_2.0.1      
## [22] bookdown_0.32       BiocManager_1.30.19 stringr_1.5.0      
## [25] compiler_4.3.0      fs_1.6.1            systemfonts_1.0.4  
## [28] digest_0.6.31       R6_2.5.1            magrittr_2.0.3     
## [31] bslib_0.4.2         tools_4.3.0         pkgdown_2.0.7.9000 
## [34] cachem_1.0.6        desc_1.4.2