<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>ageSchemaClient Blog</title>
        <link>https://dev.standardbeagle.com/ageSchemaClient/blog</link>
        <description>ageSchemaClient Blog</description>
        <lastBuildDate>Mon, 26 May 2025 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Why Age Schema Client - Loading Data Quickly and Securely]]></title>
            <link>https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client</link>
            <guid>https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client</guid>
            <pubDate>Mon, 26 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[When working with Apache AGE (A Graph Extension) for PostgreSQL, developers often face challenges around performance, type safety, and security. The Age Schema Client was born from the need to address these challenges head-on, providing a robust solution for working with graph databases in TypeScript applications.]]></description>
            <content:encoded><![CDATA[<p>When working with Apache AGE (A Graph Extension) for PostgreSQL, developers often face challenges around performance, type safety, and security. The Age Schema Client was born from the need to address these challenges head-on, providing a robust solution for working with graph databases in TypeScript applications.</p>
<h2 class="anchor anchorWithStickyNavbar_VZGz" id="the-performance-challenge">The Performance Challenge<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#the-performance-challenge" class="hash-link" aria-label="Direct link to The Performance Challenge" title="Direct link to The Performance Challenge">​</a></h2>
<p>One of the biggest hurdles when working with Apache AGE is efficiently loading large volumes of data. Traditional approaches often involve:</p>
<ul>
<li>Multiple round trips to the database</li>
<li>Complex transaction management</li>
<li>Inefficient parameter passing in Cypher queries</li>
</ul>
<p>Age Schema Client solves these issues with its optimized batch loading system that leverages PostgreSQL's native capabilities.</p>
<h3 class="anchor anchorWithStickyNavbar_VZGz" id="how-we-achieve-fast-data-loading">How We Achieve Fast Data Loading<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#how-we-achieve-fast-data-loading" class="hash-link" aria-label="Direct link to How We Achieve Fast Data Loading" title="Direct link to How We Achieve Fast Data Loading">​</a></h3>
<p>Our batch loader uses a clever approach that works around Apache AGE's limitations:</p>
<div class="language-typescript codeBlockContainer_yJlR theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_NNZH"><pre tabindex="0" class="prism-code language-typescript codeBlock_SXTA thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j_Hq"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Traditional approach - slow and inefficient</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> vertex </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> vertices</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">query</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">SELECT * FROM cypher('my_graph', $$</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">      CREATE (v:Person {name: $1, age: $2})</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    $$) as (v agtype)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">vertex</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">name</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> vertex</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">age</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Age Schema Client approach - fast and efficient</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> loader </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">createBatchLoader</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> loader</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">loadVertices</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'Person'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> vertices</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_Ng5x"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_ro1J" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_wcdM"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_z0Eo"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The key innovation is our use of temporary tables and a single SQL function call:</p>
<ol>
<li><strong>Temporary Table Staging</strong>: We create temporary tables to stage the data</li>
<li><strong>Single Function Call</strong>: One optimized SQL function processes all the data</li>
<li><strong>Minimal Round Trips</strong>: Reduces database communication overhead</li>
<li><strong>Progress Reporting</strong>: Real-time feedback on loading progress</li>
</ol>
<p>This approach can load thousands of vertices and edges in seconds rather than minutes.</p>
<h2 class="anchor anchorWithStickyNavbar_VZGz" id="the-security-advantage-sql-parameters-done-right">The Security Advantage: SQL Parameters Done Right<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#the-security-advantage-sql-parameters-done-right" class="hash-link" aria-label="Direct link to The Security Advantage: SQL Parameters Done Right" title="Direct link to The Security Advantage: SQL Parameters Done Right">​</a></h2>
<p>Security is paramount when working with databases. Age Schema Client ensures that all data is properly parameterized, preventing SQL injection attacks.</p>
<h3 class="anchor anchorWithStickyNavbar_VZGz" id="client-side-sql-parameterization">Client-Side SQL Parameterization<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#client-side-sql-parameterization" class="hash-link" aria-label="Direct link to Client-Side SQL Parameterization" title="Direct link to Client-Side SQL Parameterization">​</a></h3>
<p>Unlike many graph database clients that construct queries through string concatenation, Age Schema Client uses proper SQL parameterization at every level:</p>
<div class="language-typescript codeBlockContainer_yJlR theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_NNZH"><pre tabindex="0" class="prism-code language-typescript codeBlock_SXTA thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j_Hq"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Secure parameter handling</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> result </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">query</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    SELECT * FROM cypher($1, $$</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">      MATCH (p:Person {name: $name})</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">      WHERE p.age &gt; $age</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">      RETURN p</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    $$, $2) as (p agtype)</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  values</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    graphName</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> userInput</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> age</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> ageInput </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Safely parameterized</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_Ng5x"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_ro1J" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_wcdM"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_z0Eo"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_VZGz" id="why-this-matters">Why This Matters<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#why-this-matters" class="hash-link" aria-label="Direct link to Why This Matters" title="Direct link to Why This Matters">​</a></h3>
<ol>
<li><strong>SQL Injection Prevention</strong>: All user input is properly escaped and parameterized</li>
<li><strong>Type Safety</strong>: TypeScript ensures parameters match expected types</li>
<li><strong>Performance</strong>: Prepared statements can be reused efficiently</li>
<li><strong>Debugging</strong>: Clear separation between query structure and data</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_VZGz" id="real-world-performance-gains">Real-World Performance Gains<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#real-world-performance-gains" class="hash-link" aria-label="Direct link to Real-World Performance Gains" title="Direct link to Real-World Performance Gains">​</a></h2>
<p>In production environments, we've seen dramatic improvements:</p>
<ul>
<li><strong>Bulk Loading</strong>: 10,000 vertices load in under 5 seconds (vs. minutes with traditional approaches)</li>
<li><strong>Memory Efficiency</strong>: Streaming approach handles datasets larger than available RAM</li>
<li><strong>Connection Pooling</strong>: Optimized connection management reduces overhead</li>
<li><strong>Transaction Safety</strong>: Automatic rollback on errors ensures data integrity</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_VZGz" id="the-type-safety-bonus">The Type Safety Bonus<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#the-type-safety-bonus" class="hash-link" aria-label="Direct link to The Type Safety Bonus" title="Direct link to The Type Safety Bonus">​</a></h2>
<p>Beyond performance and security, Age Schema Client provides full TypeScript support:</p>
<div class="language-typescript codeBlockContainer_yJlR theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_NNZH"><pre tabindex="0" class="prism-code language-typescript codeBlock_SXTA thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j_Hq"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Define your schema with full type safety</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">PersonVertex</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  age</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  email</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// TypeScript ensures correctness at compile time</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">AgeSchemaClient</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name punctuation" style="color:#393A34">{</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  vertices</span><span class="token class-name operator" style="color:#393A34">:</span><span class="token class-name"> </span><span class="token class-name punctuation" style="color:#393A34">{</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    Person</span><span class="token class-name operator" style="color:#393A34">:</span><span class="token class-name"> PersonVertex</span><span class="token class-name punctuation" style="color:#393A34">;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name punctuation" style="color:#393A34">}</span><span class="token class-name punctuation" style="color:#393A34">;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  edges</span><span class="token class-name operator" style="color:#393A34">:</span><span class="token class-name"> </span><span class="token class-name punctuation" style="color:#393A34">{</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    </span><span class="token class-name constant" style="color:#36acaa">KNOWS</span><span class="token class-name operator" style="color:#393A34">:</span><span class="token class-name"> </span><span class="token class-name punctuation" style="color:#393A34">{</span><span class="token class-name"> since</span><span class="token class-name operator" style="color:#393A34">:</span><span class="token class-name"> Date </span><span class="token class-name punctuation" style="color:#393A34">}</span><span class="token class-name punctuation" style="color:#393A34">;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name punctuation" style="color:#393A34">}</span><span class="token class-name punctuation" style="color:#393A34">;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name punctuation" style="color:#393A34">}</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Compile-time type checking</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> person </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">getVertex</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'Person'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">person</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">name</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// ✓ TypeScript knows this exists</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">person</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">invalid</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// ✗ Compile error</span><br></span></code></pre><div class="buttonGroup_Ng5x"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_ro1J" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_wcdM"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_z0Eo"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_VZGz" id="conclusion">Conclusion<a href="https://dev.standardbeagle.com/ageSchemaClient/blog/why-age-schema-client#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h2>
<p>Age Schema Client represents a significant step forward in working with Apache AGE. By focusing on performance through intelligent batching, security through proper parameterization, and developer experience through TypeScript integration, we've created a tool that makes graph databases accessible and practical for production use.</p>
<p>Whether you're building a social network, recommendation engine, or knowledge graph, Age Schema Client provides the foundation you need to work quickly and securely with your graph data.</p>
<p>Try it out today and experience the difference proper tooling can make in your graph database projects.</p>
<div class="language-bash codeBlockContainer_yJlR theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_NNZH"><pre tabindex="0" class="prism-code language-bash codeBlock_SXTA thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j_Hq"><span class="token-line" style="color:#393A34"><span class="token plain">npm install age-schema-client</span><br></span></code></pre><div class="buttonGroup_Ng5x"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_ro1J" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_wcdM"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_z0Eo"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>For more information, check out our <a href="https://dev.standardbeagle.com/ageSchemaClient/" target="_blank" rel="noopener noreferrer">documentation</a> and <a href="https://github.com/standardbeagle/ageSchemaClient" target="_blank" rel="noopener noreferrer">GitHub repository</a>.</p>]]></content:encoded>
            <category>Apache AGE</category>
            <category>Performance</category>
            <category>Security</category>
            <category>TypeScript</category>
        </item>
    </channel>
</rss>