# How can i use Postgres or any other database for ignition config data?

**URL:** <https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896>\
**Category:** Ignition\
**Created:** [September 12, 2024, 12:44pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896 "2024-09-12T12:44:25Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![PRASHANTH\_KAKKIRALA](https://avatars.discourse-cdn.com/v4/letter/p/76d3ee/32.png) [@PRASHANTH\_KAKKIRALA](https://forum.inductiveautomation.com/u/PRASHANTH_KAKKIRALA)\
**Post date:** [September 12, 2024, 12:44pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/1 "2024-09-12T12:44:25Z")

</div>

Is it possible to use Postgres or any other database to save the ignition config data.  
by default, ignition is using SQLite with config.idb. can we change this default?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 12, 2024, 12:55pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/2 "2024-09-12T12:55:25Z")

</div>

No.

And in v8.3, database storage for config is going away completely.

---

<div class="post-metadata">

**Author:** ![PRASHANTH\_KAKKIRALA](https://avatars.discourse-cdn.com/v4/letter/p/76d3ee/32.png) [@PRASHANTH\_KAKKIRALA](https://forum.inductiveautomation.com/u/PRASHANTH_KAKKIRALA)\
**Post date:** [September 12, 2024, 1:03pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/3 "2024-09-12T13:03:05Z")

</div>

Ok, what's the plan to store this config data then?  
when is 8.3 expected?

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [September 12, 2024, 1:19pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/4 "2024-09-12T13:19:19Z")

</div>

Config in 8.3 is supposed to be text files, essentially (I don't know if they'll be JSON, XML, YAML, or something else). You'll be able to use version control tools with it. v8.3 is expected to be released early 2025, but I believe they'll have some betas out by the end of the year (hopefully).

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [September 12, 2024, 1:48pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/5 "2024-09-12T13:48:06Z")

</div>

I _believe_ it's gonna be YAML.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [September 12, 2024, 1:48pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/6 "2024-09-12T13:48:55Z")

</div>

It's not.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [September 12, 2024, 1:48pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/7 "2024-09-12T13:48:57Z")

</div>

It's going to be JSON by convention, though each type of config is technically going to be able to choose and be able to store all manner of files.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [September 12, 2024, 1:50pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/8 "2024-09-12T13:50:10Z")

</div>

I'm not sure where I got that from, maybe I just dreamed it.

---

<div class="post-metadata">

**Author:** ![msteele](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/msteele/32/77889_2.png) [@msteele](https://forum.inductiveautomation.com/u/msteele)\
**Post date:** [September 12, 2024, 2:09pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/9 "2024-09-12T14:09:36Z")

</div>

Will the JSON/markup be diffable?  
For example, I've struggled to diff UDT or Tag JSON exports in 8.1 and would not want the config in 8.3 to have the same limitation.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [September 12, 2024, 2:37pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/10 "2024-09-12T14:37:00Z")

</div>

Generally, yes, because it turns out most config resources are a pretty flat key: value pair structure with no deep nesting. They're also generally all sorted in a deterministic way, though again, this is just convention, not strictly defined by the APIs involved.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 12, 2024, 2:40pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/11 "2024-09-12T14:40:57Z")

</div>

> [@paul-griffith](#):
>
> They're also generally all sorted in a deterministic way, though again, this is just convention, not strictly defined by the APIs involved.

Maybe it **should be** a rule? Hopefully with Jidesoft's Alphanumeric comparator?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [September 12, 2024, 3:04pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/12 "2024-09-12T15:04:55Z")

</div>

I'll rephrase. If you follow the happy path for configuration, using JSON, your output will be deterministically sorted, without you having to do anything as an API consumer. If you opt _out_ of that happy path (and choose to take on a lot of extra work yourself), it's up to you to store your resource files in whatever format you feel like.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 12, 2024, 3:07pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/13 "2024-09-12T15:07:37Z")

</div>

Ok, makes sense. I just have to wait to see the beta to whine if the deterministic ordering **isn't** human-friendly. 😅

---

<div class="post-metadata">

**Author:** ![justin.brzozoski](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justin.brzozoski/32/13452_2.png) [@justin.brzozoski](https://forum.inductiveautomation.com/u/justin.brzozoski)\
**Post date:** [September 12, 2024, 3:09pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/14 "2024-09-12T15:09:24Z")

</div>

I know it's unlikely to change, but I'm tossing in another vote for something easier to diff than JSON.

Over a year ago I added a json2yaml git textconv rule for all view.json files in my workspace, and it was the best damn thing I could've done.

> [@Making it easier to diff Perspective view.json files](https://forum.inductiveautomation.com/t/making-it-easier-to-diff-perspective-view-json-files/58756):
>
> If you use git a lot and are frequently annoyed at trying to read diffs of scripts in Perspective view.json files, I’ve got something you might like. Git has a feature called [textconv](https://git.wiki.kernel.org/index.php/Textconv) which can be used to convert files to a text-friendly format before diffing them. It’s not expected to create a perfect or reversible text version, just something convenient for spotting changes. The perennial example is a PDF-to-txt converter, which would let you at least see text changes in PDF documents when yo…

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [September 12, 2024, 3:09pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/15 "2024-09-12T15:09:59Z")

</div>

I can see it now...floods of support calls because someone set up the resource storage for some format some customer "insists" on using. Hopefully there is a large warning urging developers to stay on the "happy" path.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 12, 2024, 3:27pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/16 "2024-09-12T15:27:25Z")

</div>

> [@michael.flagler](#):
>
> some format some customer "insists" on using

Not customer selectable. This is something a **module developer** has to choose. (Me!)

I intend to follow the easy path for everything except my EtherNet/IP module's XML configurations. Those will simply be moved entirely to the filesystem, without any compression. They are already deterministically ordered and diff-friendly.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [September 12, 2024, 3:32pm UTC](https://forum.inductiveautomation.com/t/how-can-i-use-postgres-or-any-other-database-for-ignition-config-data/95896/17 "2024-09-12T15:32:16Z")

</div>

Ok, I guess the way @paul-griffith worded it, I thought it was selectable on a gateway-by-gateway basis, and was fearing the worst. Since it's by module developers, that makes more sense.
