<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:17:41 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-2031] Remove tenant name and mod_ prefix from PostgreSQL schema names, separate tenant data into diffent databases</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2031</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Please separate tenant data into separate databases. Currently, it appears that all tenant data is in a single database. The tenant the data belongs to is indicated by a prefix on all of the schemas. For example, our test environment currently has the &quot;diku_&quot; default prefix. Please remove that prefix along with the &quot;mod_&quot;. All of the schema names are prefixed with &quot;mod_&quot;. So, it is just redundant and requires more typing. Also, several of the schemas end with &quot;_storage&quot;. It would be nice to eliminate that as well since it is obvious that what is in the database is storage.&lt;/p&gt;

&lt;p&gt;diku_mod_audit&lt;br/&gt;
diku_mod_calendar&lt;br/&gt;
diku_mod_circulation_storage&lt;br/&gt;
diku_mod_configuration&lt;br/&gt;
diku_mod_data_import&lt;br/&gt;
diku_mod_event_config&lt;br/&gt;
diku_mod_feesfines&lt;br/&gt;
diku_mod_finance_storage&lt;br/&gt;
diku_mod_inventory_storage&lt;br/&gt;
diku_mod_kb_ebsco_java&lt;br/&gt;
diku_mod_login&lt;br/&gt;
diku_mod_notes&lt;br/&gt;
diku_mod_notify&lt;br/&gt;
diku_mod_orders_storage&lt;br/&gt;
diku_mod_password_validator&lt;br/&gt;
diku_mod_permissions&lt;br/&gt;
diku_mod_sender&lt;br/&gt;
diku_mod_source_record_manager&lt;br/&gt;
diku_mod_source_record_storage&lt;br/&gt;
diku_mod_tags&lt;br/&gt;
diku_mod_template_engine&lt;br/&gt;
diku_mod_users&lt;br/&gt;
diku_mod_vendors&lt;/p&gt;

&lt;p&gt;The tenant name prefixes are the biggest issue as it makes it difficult to write code generically that will work in any environment. It would be much better to simply store tenant data is separate databases. This way all you need to do is vary the database connection string when connecting to the database using something like JDBC or the equivalent in other languages.&lt;/p&gt;

&lt;p&gt;Using separate databases will also improve security and make database backups easier. Having multiple tenant&apos;s data all in one database is a very bad idea IMHO.&lt;/p&gt;</description>
                <environment></environment>
        <key id="79655">FOLIO-2031</key>
            <summary>Remove tenant name and mod_ prefix from PostgreSQL schema names, separate tenant data into diffent databases</summary>
                <type id="10002" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium">New Feature</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="1" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="557058:c2706f9e-f281-4999-8937-b5c5a8ff211f">Jon Miller</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Mon, 20 May 2019 20:55:05 +0000</created>
                <updated>Fri, 17 Jul 2020 21:51:37 +0000</updated>
                                                                                <due></due>
                            <votes>1</votes>
                                    <watches>3</watches>
                                                                <comments>
                                                            <comment id="189304" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Tue, 21 May 2019 13:54:19 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ac2706f9e-f281-4999-8937-b5c5a8ff211f&quot; class=&quot;user-hover&quot; rel=&quot;557058:c2706f9e-f281-4999-8937-b5c5a8ff211f&quot; data-account-id=&quot;557058:c2706f9e-f281-4999-8937-b5c5a8ff211f&quot; accountid=&quot;557058:c2706f9e-f281-4999-8937-b5c5a8ff211f&quot; rel=&quot;noreferrer&quot;&gt;Jon Miller&lt;/a&gt; you can save additonal typing by using:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-sql&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;SET&lt;/span&gt; search_path &lt;span class=&quot;code-keyword&quot;&gt;TO&lt;/span&gt; {tenant}_{&lt;span class=&quot;code-keyword&quot;&gt;module&lt;/span&gt;}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                                                            <comment id="189306" author="557058:c2706f9e-f281-4999-8937-b5c5a8ff211f" created="Tue, 21 May 2019 17:14:28 +0000"  >&lt;p&gt;If you are doing ad hoc queries, that is useful. We are already using that. One of the issues is if you are using general-purpose code generation tools that aren&apos;t specific to PostgreSQL. For example, say you use a reverse engineering tool to generate matching Java class files for entities for the tables. The code generator is going to include the schema names in all the entity class mappings. Also, there are cases where the same table name appears in more than one module and would still need to be fully qualified. For example, account appears in diku_mod_feesfines and diku_mod_vendors. Another example is fund_distribution which appears in diku_mod_finance_storage and diku_mod_orders_storage.&lt;/p&gt;

&lt;p&gt;There is also the separate issue of, do institutions really want their data stored together with other institution&apos;s data? Personally, I wouldn&apos;t. I would want my data in a separate secured database that only I have access to. This way you can easily back your database up also with only your data.&lt;/p&gt;</comment>
                                                            <comment id="189309" author="5af5e627525ba96b58654f12" created="Mon, 13 Jul 2020 16:08:01 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ab8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; class=&quot;user-hover&quot; rel=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; data-account-id=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; accountid=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; rel=&quot;noreferrer&quot;&gt;Jakub Skoczen&lt;/a&gt; I was at the migration subgroup meeting, and we&apos;re trying to clean up some Jiras. This is assigned to Core-Platform. Any updates on it? cc: &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ac2706f9e-f281-4999-8937-b5c5a8ff211f&quot; class=&quot;user-hover&quot; rel=&quot;557058:c2706f9e-f281-4999-8937-b5c5a8ff211f&quot; data-account-id=&quot;557058:c2706f9e-f281-4999-8937-b5c5a8ff211f&quot; accountid=&quot;557058:c2706f9e-f281-4999-8937-b5c5a8ff211f&quot; rel=&quot;noreferrer&quot;&gt;Jon Miller&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Af748e913-92e6-4abd-b084-e3c8275e17a1&quot; class=&quot;user-hover&quot; rel=&quot;557058:f748e913-92e6-4abd-b084-e3c8275e17a1&quot; data-account-id=&quot;557058:f748e913-92e6-4abd-b084-e3c8275e17a1&quot; accountid=&quot;557058:f748e913-92e6-4abd-b084-e3c8275e17a1&quot; rel=&quot;noreferrer&quot;&gt;Dale Arntson&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="79468">FOLIO-1794</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="79900">FOLIO-1935</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzzqz3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 21 May 2019 13:54:19 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                </customfields>
    </item>
</channel>
</rss>