<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nitheesh gaddam</title>
    <description>The latest articles on DEV Community by Nitheesh gaddam (@nitheesh_gaddam_e36ec4aa4).</description>
    <link>https://dev.to/nitheesh_gaddam_e36ec4aa4</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3690765%2Fab0f0263-51fa-4092-a1d4-ac53ab211c0f.png</url>
      <title>DEV Community: Nitheesh gaddam</title>
      <link>https://dev.to/nitheesh_gaddam_e36ec4aa4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nitheesh_gaddam_e36ec4aa4"/>
    <language>en</language>
    <item>
      <title>How Instagram Scales Tagging for Billions of Users</title>
      <dc:creator>Nitheesh gaddam</dc:creator>
      <pubDate>Sat, 17 Jan 2026 06:40:31 +0000</pubDate>
      <link>https://dev.to/nitheesh_gaddam_e36ec4aa4/how-instagram-scales-tagging-for-billions-of-users-3p79</link>
      <guid>https://dev.to/nitheesh_gaddam_e36ec4aa4/how-instagram-scales-tagging-for-billions-of-users-3p79</guid>
      <description>&lt;p&gt;Have you ever wondered what happens in the milliseconds between hitting "Share" on a photo and your friend receiving a notification that they’ve been tagged? On the surface, tagging is a simple feature. At Instagram’s scale, it is a masterclass in distributed systems design.&lt;/p&gt;

&lt;p&gt;To handle millions of tags per minute, Instagram moves away from a single "do-it-all" database and instead uses a specialized Microservices Tech Stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Core Architecture:&lt;/strong&gt; A Four-Pillar Approach&lt;br&gt;
The secret to Instagram's speed lies in using the right tool for the right job. Here is how the four main components work in harmony:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Source of Truth: Sharded PostgreSQL&lt;/strong&gt;&lt;br&gt;
Every tag needs a permanent home. Instagram uses PostgreSQL, but with a twist: Logical Sharding.&lt;/p&gt;

&lt;p&gt;How it works: Your data isn’t in one giant table; it’s partitioned across hundreds of databases based on your User_ID.&lt;/p&gt;

&lt;p&gt;The Benefit: When you view a post, the system knows exactly which shard to query, ensuring that retrieving tag coordinates and usernames is lightning-fast and consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The Speed Demon: Redis Caching&lt;/strong&gt;&lt;br&gt;
When a hashtag like #nature goes viral, thousands of writes happen every second.&lt;/p&gt;

&lt;p&gt;The Role of Redis: Instead of hammering the main database to update "post counts," Instagram uses Redis—an in-memory data store.&lt;/p&gt;

&lt;p&gt;The Benefit: It acts as a high-speed scoreboard, incrementing hashtag counts and storing "Hot Post" lists so the Explore page loads instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The Search Engine: Elasticsearch&lt;/strong&gt;&lt;br&gt;
Standard databases are terrible at text search. If you search for "summ," a SQL database would struggle to find "#summer" among billions of rows.&lt;/p&gt;

&lt;p&gt;The Solution: Instagram pipes caption data into Elasticsearch.&lt;/p&gt;

&lt;p&gt;The Benefit: It builds an Inverted Index (mapping words to Post IDs), allowing for fuzzy matching and near-instant discovery of trending topics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The Reliable Messenger: Apache Kafka&lt;/strong&gt;&lt;br&gt;
Tagging a friend triggers a chain reaction: a notification is sent, the "Photos of You" section updates, and the search index is refreshed.&lt;/p&gt;

&lt;p&gt;The Role of Kafka: It acts as a Message Queue. The main app simply "drops a note" in Kafka and moves on.&lt;/p&gt;

&lt;p&gt;The Benefit: This "asynchronous" processing ensures that if the notification service is busy, your photo upload isn't slowed down. The work happens reliably in the background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways for Developers&lt;/strong&gt;&lt;br&gt;
Decouple your services: Use queues (Kafka) so your main API stays fast.&lt;/p&gt;

&lt;p&gt;Pick the right DB: Use SQL for consistency, but NoSQL or Search Engines (Elasticsearch) for discovery.&lt;/p&gt;

&lt;p&gt;Shard early: Horizontal scaling is the only way to survive "Instagram-level" traffic.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>microservices</category>
      <category>postgres</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>How GraphRAG Works</title>
      <dc:creator>Nitheesh gaddam</dc:creator>
      <pubDate>Sat, 03 Jan 2026 04:51:50 +0000</pubDate>
      <link>https://dev.to/nitheesh_gaddam_e36ec4aa4/how-graphrag-works-2d33</link>
      <guid>https://dev.to/nitheesh_gaddam_e36ec4aa4/how-graphrag-works-2d33</guid>
      <description>&lt;p&gt;GraphRAG has two main phases: Indexing (preprocessing the dataset) and Querying (answering questions).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Indexing Phase (Offline, Expensive but Done Once)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Text Chunking — Split the input text into manageable chunks.&lt;br&gt;
Entity Extraction — Use an LLM to identify entities (people, places, organizations, concepts) and relationships from each chunk.&lt;br&gt;
Build Knowledge Graph — Create a graph where nodes are entities and edges are relationships (with descriptions).&lt;br&gt;
Community Detection — Apply graph algorithms (e.g., Leiden algorithm) to identify clusters of closely related entities (communities).&lt;br&gt;
Hierarchical Summarization — Generate summaries for each community at multiple levels (bottom-up hierarchy: detailed low-level communities → higher-level aggregated summaries).&lt;br&gt;
The result is a structured index: the graph + pre-generated community summaries.&lt;/p&gt;

&lt;p&gt;This captures implicit connections across the entire dataset that vector embeddings alone miss.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Querying Phase&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Local Queries (specific details): Retrieve relevant subgraphs or text chunks near mentioned entities.&lt;br&gt;
Global Queries (broad understanding):&lt;br&gt;
Select relevant community summaries (based on similarity to the query).&lt;br&gt;
Use the LLM to generate partial answers from each summary.&lt;br&gt;
Aggregate and summarize the partial answers into a final coherent response.&lt;/p&gt;

&lt;p&gt;This "map-reduce" style over communities enables holistic reasoning.&lt;br&gt;
Why It's Better Than Standard RAG&lt;/p&gt;

&lt;p&gt;Comprehensiveness: Captures broader themes and connections → answers are more complete.&lt;br&gt;
Diversity: Reduces repetition and surfaces varied perspectives.&lt;br&gt;
Empowerment: Provides grounded, evidence-based insights for complex datasets (e.g., conflicting news sources).&lt;br&gt;
Experiments in the paper (on datasets ~1 million tokens) show GraphRAG outperforming baseline RAG by 70-80% on metrics like comprehensiveness and diversity for global questions.&lt;/p&gt;

&lt;p&gt;Practical Details&lt;/p&gt;

&lt;p&gt;Open-source implementation: Available on GitHub (microsoft/graphrag).&lt;br&gt;
Costs: Indexing is LLM-intensive (many calls for extraction and summarization), but querying is efficient.&lt;br&gt;
Later improvements (post-paper): Things like LazyGraphRAG (more cost-efficient), DRIFT search, dynamic community selection, and auto-tuning for new domains.&lt;/p&gt;

&lt;p&gt;In summary, GraphRAG represents a major advancement in making LLMs reason over large, private, narrative-rich datasets by leveraging graph structures for "global sensemaking." It's particularly useful when standard RAG gives incomplete or superficial answers.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>genai</category>
    </item>
  </channel>
</rss>
