# Suggestions for relational databases

**URL:** <https://discourse.julialang.org/t/suggestions-for-relational-databases/63116>\
**Category:** Offtopic\
**Tags:** question, package, data\_structures\
**Created:** [June 17, 2021, 10:23pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116 "2021-06-17T22:23:27Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 17, 2021, 10:23pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/1 "2021-06-17T22:23:27Z")

</div>

I’m considering an sql or nosql database? I’m thinking MySQL using MySQL.jl , but I would like to know more about how PostSQL is different. I’ve also considered MongoDB and mongoc.jl , because of performance, but I’m not sure of the consistency, or I thought of connecting to FaunaDB using Diana.jl . What experience does anyone have with any of these?

I’m working on an accounting program, which is why I’m leaning more towards SQL.

---

<div class="post-metadata">

**Author:** ![propelledanalytics](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@propelledanalytics](https://discourse.julialang.org/u/propelledanalytics)\
**Post date:** [June 18, 2021, 6:40pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/2 "2021-06-18T18:40:18Z")

</div>

My recommendation would be to use PostgreSQL. It is the best engineered and feature rich open-source database management system there is for transaction processing (OLTP).

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 18, 2021, 8:52pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/3 "2021-06-18T20:52:21Z")

</div>

Cool. I keep finding projects for postgress in maintenence mode. What are you aware of, that is actively maintained?

---

<div class="post-metadata">

**Author:** ![propelledanalytics](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@propelledanalytics](https://discourse.julialang.org/u/propelledanalytics)\
**Post date:** [June 18, 2021, 9:08pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/4 "2021-06-18T21:08:00Z")

</div>

To work with PostgreSQL you can use JDBC:

> **[GitHub - JuliaDatabases/JDBC.jl: Julia interface to Java database drivers](https://github.com/JuliaDatabases/JDBC.jl)**
>
> Julia interface to Java database drivers. Contribute to JuliaDatabases/JDBC.jl development by creating an account on GitHub.

or LibPQ:

> **[GitHub - iamed2/LibPQ.jl: A Julia wrapper for libpq](https://github.com/iamed2/LibPQ.jl)**
>
> A Julia wrapper for libpq. Contribute to iamed2/LibPQ.jl development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 18, 2021, 11:58pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/5 "2021-06-18T23:58:45Z")

</div>

These both look useful but github doesn’t link to documentation of tutorials for either.

---

<div class="post-metadata">

**Author:** ![propelledanalytics](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@propelledanalytics](https://discourse.julialang.org/u/propelledanalytics)\
**Post date:** [June 19, 2021, 5:12pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/6 "2021-06-19T17:12:55Z")

</div>

Hi Brett,

PostgreSQL has interactive installers for Linux, macOS, Windows:  
[https://www.postgresql.org/download](https://www.postgresql.org/download)

The PostgreSQL project has excellent documentation and includes step-by-step tutorials:

> **[PostgreSQL 16.0 Documentation](https://www.postgresql.org/docs/current/)**
>
> PostgreSQL 16.0 Documentation The PostgreSQL Global Development Group Copyright © 1996–2023 The PostgreSQL Global Development Group Legal Notice Table of …

To use PostgreSQL with Julia, I’d recommend JDBC.jl as a starting point. JDBC is one of the most common ways to connect to relational databases (the other being ODBC).

> <https://github.com/JuliaDatabases/JDBC.jl/blob/master/README.md>

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 19, 2021, 5:20pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/7 "2021-06-19T17:20:26Z")

</div>

I,ve installed PostgreSQL. I also reinstalled office calc to handle databases.

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 21, 2021, 7:36pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/8 "2021-06-21T19:36:55Z")

</div>

Is the next step to set up a local host, and connect it to julia?

---

<div class="post-metadata">

**Author:** ![lungben](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lungben/32/12314_2.png) [@lungben](https://discourse.julialang.org/u/lungben)\
**Post date:** [June 21, 2021, 7:40pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/9 "2021-06-21T19:40:37Z")

</div>

I would also suggest PostgreSQL and LibPQ.  
Not sure about JDBC - I wonder if the Java interface adds complexity or reduces performance compared to a more “native” C-driver? Or has JDBC other advantages (despite compatibility with other DB types)?

The easiest (and post portable) way to run the Postgres server is in a Docker container.

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 21, 2021, 8:11pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/10 "2021-06-21T20:11:28Z")

</div>

How do I set up a container?

Regards,  
brett knoss

Privacy for your emails

---

<div class="post-metadata">

**Author:** ![lungben](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lungben/32/12314_2.png) [@lungben](https://discourse.julialang.org/u/lungben)\
**Post date:** [June 21, 2021, 8:19pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/11 "2021-06-21T20:19:02Z")

</div>

You need to install Docker - the instructions for Windows are given here (I strongly recommend the WSL2 backend): [Install Docker Desktop on Windows | Docker Documentation](https://docs.docker.com/docker-for-windows/install/)  
Then, starting the Postgres DB is easy, for the most basic use case it is just:

```julia
docker run -p 5432:5432 postgres

```

For real usage you should define a volume for the database so that it is persistent, more information is given here: [Docker Hub](https://hub.docker.com/_/postgres)

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 21, 2021, 8:31pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/12 "2021-06-21T20:31:25Z")

</div>

What about installing on Debian?

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [June 21, 2021, 9:25pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/13 "2021-06-21T21:25:10Z")

</div>

I think this has veered pretty far outside of the territory of being about Julia programming.

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 21, 2021, 9:35pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/14 "2021-06-21T21:35:32Z")

</div>

Has it? I need to save something. Although Jupyeter has a play button, so I could write my entries and compile a ledger. If I knew how to set up a Julia kernel in Jupyter.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [June 21, 2021, 9:50pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/15 "2021-06-21T21:50:36Z")

</div>

If you want to learn how to install Debian or use containers you can ask about that on StackOverflow or peruse the documentation of those projects.

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 21, 2021, 10:45pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/16 "2021-06-21T22:45:22Z")

</div>

No Docker in Debian. I’m sure I can look it up.

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 22, 2021, 6:23pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/17 "2021-06-22T18:23:20Z")

</div>

I didn’t find Docker instructions for and Linux distros. I’m not sure about JavaScript, I can see that being a problem, but if the interface is with a C library, that can be an advantage. Crystal is made to be like Ruby, and shares a lot with Python, so it might be worth looking at for anyone seeking to design stuff like databases. Not sure if being LLVM is an advantage in interfacing with Julia.

---

<div class="post-metadata">

**Author:** ![lungben](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lungben/32/12314_2.png) [@lungben](https://discourse.julialang.org/u/lungben)\
**Post date:** [June 22, 2021, 6:43pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/18 "2021-06-22T18:43:08Z")

</div>

For Debian instructions are given here: [Install Docker Engine on Debian | Docker Documentation](https://docs.docker.com/engine/install/debian/)

---

<div class="post-metadata">

**Author:** ![brett\_knoss](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brett_knoss/32/13050_2.png) [@brett\_knoss](https://discourse.julialang.org/u/brett_knoss)\
**Post date:** [June 22, 2021, 6:44pm UTC](https://discourse.julialang.org/t/suggestions-for-relational-databases/63116/19 "2021-06-22T18:44:20Z")

</div>

great thanks.
