<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://knowledgebase.pirho.net/index.php?action=history&amp;feed=atom&amp;title=Not_Everything_Belongs_in_a_Database</id>
	<title>Not Everything Belongs in a Database - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://knowledgebase.pirho.net/index.php?action=history&amp;feed=atom&amp;title=Not_Everything_Belongs_in_a_Database"/>
	<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Not_Everything_Belongs_in_a_Database&amp;action=history"/>
	<updated>2026-07-13T14:28:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://knowledgebase.pirho.net/index.php?title=Not_Everything_Belongs_in_a_Database&amp;diff=442&amp;oldid=prev</id>
		<title>Dex at 19:30, 12 July 2026</title>
		<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Not_Everything_Belongs_in_a_Database&amp;diff=442&amp;oldid=prev"/>
		<updated>2026-07-12T19:30:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:30, 12 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039; Understanding Storage Repositories in Enterprise and Cloud Systems &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039; Understanding Storage Repositories in Enterprise and Cloud Systems &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Introduction ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One of the most common architectural mistakes made by developers is assuming that every piece of information should be stored in a database.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One of the most common architectural mistakes made by developers is assuming that every piece of information should be stored in a database.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-441:rev-442:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Dex</name></author>
	</entry>
	<entry>
		<id>https://knowledgebase.pirho.net/index.php?title=Not_Everything_Belongs_in_a_Database&amp;diff=441&amp;oldid=prev</id>
		<title>Dex at 19:29, 12 July 2026</title>
		<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Not_Everything_Belongs_in_a_Database&amp;diff=441&amp;oldid=prev"/>
		<updated>2026-07-12T19:29:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:29, 12 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Not Everything Belongs in a Database =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/ins&gt;Understanding Storage Repositories in Enterprise and Cloud Systems &#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== &lt;/del&gt;Understanding Storage Repositories in Enterprise and Cloud Systems &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;By Dex White&lt;/del&gt;&#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Introduction ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One of the most common architectural mistakes made by developers is assuming that every piece of information should be stored in a database.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One of the most common architectural mistakes made by developers is assuming that every piece of information should be stored in a database.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-440:rev-441:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Dex</name></author>
	</entry>
	<entry>
		<id>https://knowledgebase.pirho.net/index.php?title=Not_Everything_Belongs_in_a_Database&amp;diff=440&amp;oldid=prev</id>
		<title>Dex: Created page with &quot;= Not Everything Belongs in a Database = == Understanding Storage Repositories in Enterprise and Cloud Systems ==  &#039;&#039;By Dex White&#039;&#039;  == Introduction ==  One of the most common architectural mistakes made by developers is assuming that every piece of information should be stored in a database.  Need users?  &lt;blockquote&gt; Create a Users table. &lt;/blockquote&gt;  Need files?  &lt;blockquote&gt; Create a Files table. &lt;/blockquote&gt;  Need logs?  &lt;blockquote&gt; Create a Logs table. &lt;/blockq...&quot;</title>
		<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Not_Everything_Belongs_in_a_Database&amp;diff=440&amp;oldid=prev"/>
		<updated>2026-07-12T19:28:47Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Not Everything Belongs in a Database = == Understanding Storage Repositories in Enterprise and Cloud Systems ==  &amp;#039;&amp;#039;By Dex White&amp;#039;&amp;#039;  == Introduction ==  One of the most common architectural mistakes made by developers is assuming that every piece of information should be stored in a database.  Need users?  &amp;lt;blockquote&amp;gt; Create a Users table. &amp;lt;/blockquote&amp;gt;  Need files?  &amp;lt;blockquote&amp;gt; Create a Files table. &amp;lt;/blockquote&amp;gt;  Need logs?  &amp;lt;blockquote&amp;gt; Create a Logs table. &amp;lt;/blockq...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Not Everything Belongs in a Database =&lt;br /&gt;
== Understanding Storage Repositories in Enterprise and Cloud Systems ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;By Dex White&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
One of the most common architectural mistakes made by developers is assuming that every piece of information should be stored in a database.&lt;br /&gt;
&lt;br /&gt;
Need users?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Create a Users table.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Need files?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Create a Files table.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Need logs?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Create a Logs table.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Need permissions?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Add some more tables.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this approach may work for smaller applications, enterprise and cloud systems quickly reveal its limitations.&lt;br /&gt;
&lt;br /&gt;
The reality is that modern systems rarely rely on a single storage technology. Instead, they employ multiple repositories, each selected because it excels at a particular task.&lt;br /&gt;
&lt;br /&gt;
A large cloud platform might simultaneously use:&lt;br /&gt;
&lt;br /&gt;
* LDAP for identity management&lt;br /&gt;
* SQL databases for business transactions&lt;br /&gt;
* Object storage for files and documents&lt;br /&gt;
* Search indexes for discovery&lt;br /&gt;
* Graph databases for relationships&lt;br /&gt;
* Time-series databases for monitoring and telemetry&lt;br /&gt;
&lt;br /&gt;
The question is not:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Which repository is best?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The real question is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Which repository is best suited to the data being stored?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Understanding the Purpose of a Repository ==&lt;br /&gt;
&lt;br /&gt;
Every repository technology was created to solve a particular problem.&lt;br /&gt;
&lt;br /&gt;
Before selecting a storage technology, architects should ask four fundamental questions:&lt;br /&gt;
&lt;br /&gt;
=== 1. What is being stored? ===&lt;br /&gt;
&lt;br /&gt;
Are you storing:&lt;br /&gt;
&lt;br /&gt;
* User identities?&lt;br /&gt;
* Customer orders?&lt;br /&gt;
* Documents?&lt;br /&gt;
* Media files?&lt;br /&gt;
* Telemetry?&lt;br /&gt;
* Relationships?&lt;br /&gt;
&lt;br /&gt;
Different data types often require different storage technologies.&lt;br /&gt;
&lt;br /&gt;
=== 2. How will it be accessed? ===&lt;br /&gt;
&lt;br /&gt;
Will the system perform:&lt;br /&gt;
&lt;br /&gt;
* Mostly reads?&lt;br /&gt;
* Mostly writes?&lt;br /&gt;
* Full-text searches?&lt;br /&gt;
* Analytics?&lt;br /&gt;
* Transactions?&lt;br /&gt;
&lt;br /&gt;
Storage solutions are often optimized for specific access patterns.&lt;br /&gt;
&lt;br /&gt;
=== 3. How large will it become? ===&lt;br /&gt;
&lt;br /&gt;
A solution designed for thousands of records may struggle with billions.&lt;br /&gt;
&lt;br /&gt;
Scale matters.&lt;br /&gt;
&lt;br /&gt;
=== 4. How important is consistency? ===&lt;br /&gt;
&lt;br /&gt;
Does every transaction need to be immediately correct?&lt;br /&gt;
&lt;br /&gt;
Or is eventual consistency acceptable?&lt;br /&gt;
&lt;br /&gt;
The answer significantly influences repository selection.&lt;br /&gt;
&lt;br /&gt;
== The Enterprise View of Data ==&lt;br /&gt;
&lt;br /&gt;
Enterprise architects typically separate data into several categories:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Identity Data&lt;br /&gt;
Business Data&lt;br /&gt;
Content Data&lt;br /&gt;
Operational Data&lt;br /&gt;
Analytical Data&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each category tends to have a natural home.&lt;br /&gt;
&lt;br /&gt;
Attempting to force all five categories into a single database often leads to unnecessary complexity, reduced performance, and maintenance difficulties.&lt;br /&gt;
&lt;br /&gt;
== LDAP Directories ==&lt;br /&gt;
&lt;br /&gt;
=== What LDAP Was Designed To Do ===&lt;br /&gt;
&lt;br /&gt;
LDAP (Lightweight Directory Access Protocol) is frequently misunderstood.&lt;br /&gt;
&lt;br /&gt;
LDAP is not a database replacement.&lt;br /&gt;
&lt;br /&gt;
It is a directory service designed to answer questions about identities.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Who is this user?&lt;br /&gt;
&lt;br /&gt;
Which groups do they belong to?&lt;br /&gt;
&lt;br /&gt;
What permissions do they have?&lt;br /&gt;
&lt;br /&gt;
Can they authenticate?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These questions are read-heavy and rarely involve complex transactions.&lt;br /&gt;
&lt;br /&gt;
LDAP was specifically engineered for this type of workload.&lt;br /&gt;
&lt;br /&gt;
=== Strengths of LDAP ===&lt;br /&gt;
&lt;br /&gt;
==== Fast Reads ====&lt;br /&gt;
&lt;br /&gt;
Directory services are heavily optimized for lookup operations.&lt;br /&gt;
&lt;br /&gt;
Finding a user, group, or permission is extremely efficient.&lt;br /&gt;
&lt;br /&gt;
==== Hierarchical Structure ====&lt;br /&gt;
&lt;br /&gt;
Directories naturally represent organisational structures.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Company&lt;br /&gt;
└── Departments&lt;br /&gt;
    ├── Finance&lt;br /&gt;
    ├── HR&lt;br /&gt;
    └── IT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Standards-Based ====&lt;br /&gt;
&lt;br /&gt;
LDAP is widely supported by:&lt;br /&gt;
&lt;br /&gt;
* Active Directory&lt;br /&gt;
* OpenLDAP&lt;br /&gt;
* FreeIPA&lt;br /&gt;
* Enterprise Identity Platforms&lt;br /&gt;
&lt;br /&gt;
==== Centralized Identity ====&lt;br /&gt;
&lt;br /&gt;
Multiple applications can authenticate against a single repository.&lt;br /&gt;
&lt;br /&gt;
This creates a true Single Sign-On foundation.&lt;br /&gt;
&lt;br /&gt;
=== Weaknesses of LDAP ===&lt;br /&gt;
&lt;br /&gt;
LDAP is not ideal for:&lt;br /&gt;
&lt;br /&gt;
* Financial transactions&lt;br /&gt;
* Order processing&lt;br /&gt;
* Complex reporting&lt;br /&gt;
* Relational business data&lt;br /&gt;
&lt;br /&gt;
While these tasks are technically possible, they are not what LDAP was designed for.&lt;br /&gt;
&lt;br /&gt;
=== Best Use Cases ===&lt;br /&gt;
&lt;br /&gt;
LDAP excels at:&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
* Authorization&lt;br /&gt;
* Identity Management&lt;br /&gt;
* Group Membership&lt;br /&gt;
* Enterprise SSO&lt;br /&gt;
&lt;br /&gt;
== SQL Databases ==&lt;br /&gt;
&lt;br /&gt;
=== What SQL Was Designed To Do ===&lt;br /&gt;
&lt;br /&gt;
Relational databases were designed to model business information.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Customers&lt;br /&gt;
Orders&lt;br /&gt;
Invoices&lt;br /&gt;
Projects&lt;br /&gt;
Assets&lt;br /&gt;
Contracts&lt;br /&gt;
Tickets&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relationships between data are a core strength of SQL systems.&lt;br /&gt;
&lt;br /&gt;
=== Strengths of SQL ===&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity ====&lt;br /&gt;
&lt;br /&gt;
SQL databases provide:&lt;br /&gt;
&lt;br /&gt;
* Constraints&lt;br /&gt;
* Relationships&lt;br /&gt;
* Referential integrity&lt;br /&gt;
&lt;br /&gt;
This ensures that business rules remain enforced.&lt;br /&gt;
&lt;br /&gt;
==== Transactions ====&lt;br /&gt;
&lt;br /&gt;
ACID-compliant databases guarantee consistency.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Transfer £100&lt;br /&gt;
&lt;br /&gt;
Debit Account A&lt;br /&gt;
Credit Account B&lt;br /&gt;
&lt;br /&gt;
Commit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Either both actions succeed or neither does.&lt;br /&gt;
&lt;br /&gt;
==== Query Power ====&lt;br /&gt;
&lt;br /&gt;
SQL remains one of the most powerful data query languages ever created.&lt;br /&gt;
&lt;br /&gt;
Complex reporting often requires only a single query.&lt;br /&gt;
&lt;br /&gt;
=== Weaknesses of SQL ===&lt;br /&gt;
&lt;br /&gt;
SQL databases can become challenging when:&lt;br /&gt;
&lt;br /&gt;
* Scaling globally&lt;br /&gt;
* Handling billions of records&lt;br /&gt;
* Managing highly variable schemas&lt;br /&gt;
&lt;br /&gt;
Modern cloud platforms frequently supplement relational systems with specialised repositories.&lt;br /&gt;
&lt;br /&gt;
=== Best Use Cases ===&lt;br /&gt;
&lt;br /&gt;
SQL excels at:&lt;br /&gt;
&lt;br /&gt;
* ERP systems&lt;br /&gt;
* CRM systems&lt;br /&gt;
* E-Commerce&lt;br /&gt;
* Workflow systems&lt;br /&gt;
* Financial systems&lt;br /&gt;
* Business applications&lt;br /&gt;
&lt;br /&gt;
== Why Most Web Applications Store Users in SQL ==&lt;br /&gt;
&lt;br /&gt;
Many developers encounter authentication systems that look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Users&lt;br /&gt;
├── Id&lt;br /&gt;
├── Username&lt;br /&gt;
├── PasswordHash&lt;br /&gt;
├── Email&lt;br /&gt;
└── Role&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For many applications this is entirely acceptable.&lt;br /&gt;
&lt;br /&gt;
A system with:&lt;br /&gt;
&lt;br /&gt;
* 100 users&lt;br /&gt;
* 1,000 users&lt;br /&gt;
* 10,000 users&lt;br /&gt;
&lt;br /&gt;
can operate perfectly well using SQL-based authentication.&lt;br /&gt;
&lt;br /&gt;
The approach is simple, familiar and easy to maintain.&lt;br /&gt;
&lt;br /&gt;
== The Problem Appears Later ==&lt;br /&gt;
&lt;br /&gt;
Imagine an organisation running:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CRM&lt;br /&gt;
HR&lt;br /&gt;
Finance&lt;br /&gt;
Projects&lt;br /&gt;
Ticketing&lt;br /&gt;
Knowledgebase&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If each application maintains its own user table, the organisation inherits several problems:&lt;br /&gt;
&lt;br /&gt;
* Multiple passwords&lt;br /&gt;
* Multiple user accounts&lt;br /&gt;
* Multiple role systems&lt;br /&gt;
* Multiple account lockout policies&lt;br /&gt;
* Multiple password reset processes&lt;br /&gt;
&lt;br /&gt;
Sooner or later someone asks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Why can&amp;#039;t users just sign in once?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This question is one of the reasons directory services became so important.&lt;br /&gt;
&lt;br /&gt;
== Why Enterprises Prefer LDAP ==&lt;br /&gt;
&lt;br /&gt;
Enterprise environments typically treat Identity as a platform rather than an application feature.&lt;br /&gt;
&lt;br /&gt;
Instead of every application storing users independently:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application A&lt;br /&gt;
Application B&lt;br /&gt;
Application C&lt;br /&gt;
Application D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
all applications authenticate against a common directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Applications&lt;br /&gt;
       │&lt;br /&gt;
       ▼&lt;br /&gt;
Identity Provider&lt;br /&gt;
       │&lt;br /&gt;
       ▼&lt;br /&gt;
LDAP Directory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
* Centralized authentication&lt;br /&gt;
* Centralized authorization&lt;br /&gt;
* Consistent security policies&lt;br /&gt;
* Simplified auditing&lt;br /&gt;
* Simplified user management&lt;br /&gt;
&lt;br /&gt;
== Modern Cloud Identity ==&lt;br /&gt;
&lt;br /&gt;
Many people consider LDAP old technology.&lt;br /&gt;
&lt;br /&gt;
In reality, most modern identity systems still follow directory principles.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Microsoft Entra ID&lt;br /&gt;
* Okta&lt;br /&gt;
* Auth0&lt;br /&gt;
* Ping Identity&lt;br /&gt;
* Keycloak&lt;br /&gt;
&lt;br /&gt;
Although the underlying implementation may differ, the conceptual model remains familiar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
User&lt;br /&gt;
Group&lt;br /&gt;
Role&lt;br /&gt;
Claim&lt;br /&gt;
Permission&lt;br /&gt;
Organisation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The industry has evolved, but the concepts have endured.&lt;br /&gt;
&lt;br /&gt;
== Beyond LDAP and SQL ==&lt;br /&gt;
&lt;br /&gt;
Modern cloud architectures frequently use several repository technologies simultaneously.&lt;br /&gt;
&lt;br /&gt;
=== Object Storage ===&lt;br /&gt;
&lt;br /&gt;
Best for:&lt;br /&gt;
&lt;br /&gt;
* Documents&lt;br /&gt;
* Images&lt;br /&gt;
* Video&lt;br /&gt;
* Backups&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Azure Blob Storage&lt;br /&gt;
* Amazon S3&lt;br /&gt;
* Google Cloud Storage&lt;br /&gt;
&lt;br /&gt;
=== NoSQL Databases ===&lt;br /&gt;
&lt;br /&gt;
Best for:&lt;br /&gt;
&lt;br /&gt;
* Massive scale&lt;br /&gt;
* Flexible schemas&lt;br /&gt;
* Distributed applications&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
* DynamoDB&lt;br /&gt;
* Cosmos DB&lt;br /&gt;
&lt;br /&gt;
=== Search Engines ===&lt;br /&gt;
&lt;br /&gt;
Best for:&lt;br /&gt;
&lt;br /&gt;
* Full-text search&lt;br /&gt;
* Content discovery&lt;br /&gt;
* Indexing&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Elasticsearch&lt;br /&gt;
* Solr&lt;br /&gt;
* OpenSearch&lt;br /&gt;
&lt;br /&gt;
=== Graph Databases ===&lt;br /&gt;
&lt;br /&gt;
Best for:&lt;br /&gt;
&lt;br /&gt;
* Relationship analysis&lt;br /&gt;
* Social networks&lt;br /&gt;
* Dependency mapping&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Neo4j&lt;br /&gt;
* Amazon Neptune&lt;br /&gt;
&lt;br /&gt;
=== Time-Series Databases ===&lt;br /&gt;
&lt;br /&gt;
Best for:&lt;br /&gt;
&lt;br /&gt;
* Monitoring&lt;br /&gt;
* Metrics&lt;br /&gt;
* Telemetry&lt;br /&gt;
* IoT&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* InfluxDB&lt;br /&gt;
* Prometheus&lt;br /&gt;
* TimescaleDB&lt;br /&gt;
&lt;br /&gt;
== Repository Selection Matrix ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Repository Type&lt;br /&gt;
! Best Suited For&lt;br /&gt;
|-&lt;br /&gt;
| LDAP&lt;br /&gt;
| Identity and Authentication&lt;br /&gt;
|-&lt;br /&gt;
| Active Directory&lt;br /&gt;
| Enterprise Identity Management&lt;br /&gt;
|-&lt;br /&gt;
| SQL Database&lt;br /&gt;
| Transactional Business Data&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database&lt;br /&gt;
| Massive Scale Distributed Data&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage&lt;br /&gt;
| Files and Documents&lt;br /&gt;
|-&lt;br /&gt;
| Search Engine&lt;br /&gt;
| Full-Text Search&lt;br /&gt;
|-&lt;br /&gt;
| Graph Database&lt;br /&gt;
| Relationships and Dependencies&lt;br /&gt;
|-&lt;br /&gt;
| Time-Series Database&lt;br /&gt;
| Metrics and Telemetry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Designing for the Future ==&lt;br /&gt;
&lt;br /&gt;
When designing a new platform, it is tempting to choose a single repository and store everything there.&lt;br /&gt;
&lt;br /&gt;
Initially this appears simpler.&lt;br /&gt;
&lt;br /&gt;
However, long-lived systems benefit greatly from separation of concerns.&lt;br /&gt;
&lt;br /&gt;
A good rule of thumb is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Identity Data&lt;br /&gt;
    ↓&lt;br /&gt;
Directory Service&lt;br /&gt;
&lt;br /&gt;
Business Data&lt;br /&gt;
    ↓&lt;br /&gt;
SQL Database&lt;br /&gt;
&lt;br /&gt;
Files&lt;br /&gt;
    ↓&lt;br /&gt;
Object Storage&lt;br /&gt;
&lt;br /&gt;
Logs&lt;br /&gt;
    ↓&lt;br /&gt;
Telemetry Platform&lt;br /&gt;
&lt;br /&gt;
Search&lt;br /&gt;
    ↓&lt;br /&gt;
Search Engine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each repository performs the task it was designed to do.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Storage repositories are not competitors; they are specialists.&lt;br /&gt;
&lt;br /&gt;
LDAP is not better than SQL.&lt;br /&gt;
&lt;br /&gt;
SQL is not better than object storage.&lt;br /&gt;
&lt;br /&gt;
Object storage is not better than a graph database.&lt;br /&gt;
&lt;br /&gt;
Each exists because different categories of information require different treatment.&lt;br /&gt;
&lt;br /&gt;
The most successful enterprise and cloud architectures recognise this reality and place data where it naturally belongs.&lt;br /&gt;
&lt;br /&gt;
The goal is not to find a universal repository.&lt;br /&gt;
&lt;br /&gt;
The goal is to provide every type of data with the most appropriate home.&lt;br /&gt;
&lt;br /&gt;
In architecture, as in engineering, the right tool for the right job remains one of the most important principles of all.&lt;/div&gt;</summary>
		<author><name>Dex</name></author>
	</entry>
</feed>