<?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: Srinivas R 🇮🇳</title>
    <description>The latest articles on DEV Community by Srinivas R 🇮🇳 (@srini_vas).</description>
    <link>https://dev.to/srini_vas</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%2F685027%2Fd2fcea83-e5d6-422b-9228-0ff24ea14457.png</url>
      <title>DEV Community: Srinivas R 🇮🇳</title>
      <link>https://dev.to/srini_vas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srini_vas"/>
    <language>en</language>
    <item>
      <title>Temp table in SQL Server</title>
      <dc:creator>Srinivas R 🇮🇳</dc:creator>
      <pubDate>Fri, 22 Sep 2023 04:55:40 +0000</pubDate>
      <link>https://dev.to/srini_vas/temp-table-in-sql-server-2j3j</link>
      <guid>https://dev.to/srini_vas/temp-table-in-sql-server-2j3j</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is temp table in SQL Server?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In SQL Server, a temporary table is a table that is created and exists only for the duration of a database session or a specific batch of SQL statements. Temporary tables are typically used to store intermediate results, perform complex data manipulations, or break down a complex query into simpler steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are two types of temporary tables in SQL Server:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Local Temporary Tables:&lt;/strong&gt;&lt;/em&gt; These tables are prefixed with a single "#" symbol and are visible only within the current session. They are automatically dropped when the session that created them ends or when the batch of SQL statements completes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE #TempTable (
ID INT,
Name VARCHAR(50)
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Global Temporary Tables: These tables are prefixed with a double "##" symbol and are visible across multiple sessions. They persist until all sessions that have referenced them are closed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE ##GlobalTempTable (
ID INT,
Name VARCHAR(50)
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Temporary tables are useful for scenarios where you need to temporarily store and manipulate data within a specific scope, without affecting the structure of your permanent tables. Once you're done with a temporary table, it's a good practice to explicitly drop it to release the associated resources.&lt;/p&gt;

&lt;p&gt;Please note that temporary tables can be a powerful tool, but they should be used judiciously to avoid performance issues and resource contention in a multi-user database environment.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>sqlserver</category>
      <category>microsoft</category>
      <category>ssms</category>
    </item>
    <item>
      <title>What is ETL</title>
      <dc:creator>Srinivas R 🇮🇳</dc:creator>
      <pubDate>Mon, 18 Sep 2023 11:16:44 +0000</pubDate>
      <link>https://dev.to/srini_vas/what-is-etl-1cep</link>
      <guid>https://dev.to/srini_vas/what-is-etl-1cep</guid>
      <description>&lt;p&gt;&lt;strong&gt;𝗪𝗵𝗮𝘁 𝗶𝘀 𝗘𝗧𝗟?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Extract, Transform, Load (ETL) is a data integration process that involves:&lt;/p&gt;

&lt;p&gt;𝟭. 𝗘𝘅𝘁𝗿𝗮𝗰𝘁: This step involves extracting data from various heterogeneous sources. These sources include databases, flat files, APIs, or other data storage mechanisms.&lt;/p&gt;

&lt;p&gt;𝟮. 𝗧𝗿𝗮𝗻𝘀𝗳𝗼𝗿𝗺: Once the data is extracted, it often needs to be transformed into a format suitable for analysis or reporting. This transformation can involve various operations such as:&lt;br&gt;
  🔹 Cleaning the data (e.g., removing duplicates or correcting errors).&lt;br&gt;
  🔹 Enriching the data (e.g., combining it with other sources).&lt;br&gt;
  🔹 Aggregating or summarizing data.&lt;br&gt;
  🔹 Converting data types or formats.&lt;br&gt;
  🔹 Applying business rules or calculations.&lt;/p&gt;

&lt;p&gt;𝟯. 𝗟𝗼𝗮𝗱: The final step is to load the transformed data into a target system, often a data warehouse, data mart, or another database. This system is then used for business intelligence, reporting, or further analysis.&lt;/p&gt;

&lt;p&gt;Some everyday use cases for ETL are:&lt;/p&gt;

&lt;p&gt;𝟭. 𝗗𝗮𝘁𝗮 𝗪𝗮𝗿𝗲𝗵𝗼𝘂𝘀𝗶𝗻𝗴: ETL processes are fundamental to data warehousing. They pull data from various operational systems, transform it, and then load it into a data warehouse for analysis.&lt;/p&gt;

&lt;p&gt;𝟮. 𝗗𝗮𝘁𝗮 𝗠𝗶𝗴𝗿𝗮𝘁𝗶𝗼𝗻: When businesses change or upgrade their systems, they often need to move data from one system or format to another. ETL processes can help with this migration.&lt;/p&gt;

&lt;p&gt;𝟯. 𝗗𝗮𝘁𝗮 𝗜𝗻𝘁𝗲𝗴𝗿𝗮𝘁𝗶𝗼𝗻: Companies often have data spread across multiple systems. ETL can integrate this data to provide a unified view.&lt;/p&gt;

&lt;p&gt;𝟰. 𝗕𝘂𝘀𝗶𝗻𝗲𝘀𝘀 𝗜𝗻𝘁𝗲𝗹𝗹𝗶𝗴𝗲𝗻𝗰𝗲 𝗮𝗻𝗱 𝗥𝗲𝗽𝗼𝗿𝘁𝗶𝗻𝗴: For meaningful BI and reporting, data must often be cleaned, transformed, and integrated. ETL processes facilitate this.&lt;/p&gt;

&lt;p&gt;𝟱. 𝗗𝗮𝘁𝗮 𝗟𝗮𝗸𝗲 𝗣𝗼𝗽𝘂𝗹𝗮𝘁𝗶𝗼𝗻: ETL processes can populate data lakes with structured and unstructured data from various sources.&lt;/p&gt;

&lt;p&gt;Some standard 𝗘𝗧𝗟 𝘁𝗼𝗼𝗹𝘀 are Microsoft SSIS, Talend, Oracle Data Integrator, Apache NiFi, and AWS Glue.&lt;/p&gt;

&lt;p&gt;There is also a bit different approach nowadays, called 𝗘𝗟𝗧 (𝗘𝘅𝘁𝗿𝗮𝗰𝘁, 𝗟𝗼𝗮𝗱, 𝗧𝗿𝗮𝗻𝘀𝗳𝗼𝗿𝗺). This is a data integration approach where raw data is extracted from various sources, loaded directly into a data warehouse or big data platform, and finally transformed within that target systems&lt;/p&gt;

</description>
      <category>data</category>
      <category>technologies</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>What is CQRS Pattern?</title>
      <dc:creator>Srinivas R 🇮🇳</dc:creator>
      <pubDate>Sun, 17 Sep 2023 05:51:05 +0000</pubDate>
      <link>https://dev.to/srini_vas/what-is-cqrs-pattern-53cf</link>
      <guid>https://dev.to/srini_vas/what-is-cqrs-pattern-53cf</guid>
      <description>&lt;p&gt;CQRS, which stands for Command Query Responsibility Segregation, is a software architectural pattern used in software development, particularly in the context of designing and building complex applications. The CQRS pattern separates the responsibility for handling commands (requests that change the state of an application) from the responsibility for handling queries (requests that retrieve data from the application).&lt;/p&gt;

&lt;p&gt;Key characteristics of the CQRS pattern include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Separation of Commands and Queries: In a CQRS-based architecture, commands (e.g., creating, updating, or deleting data) are handled separately from queries (e.g., reading data). This separation allows each part of the application to be optimized for its specific task.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Command Handlers: Command handlers are responsible for processing commands. They update the application's state and can perform tasks such as validation, authorization, and triggering domain logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Query Handlers: Query handlers are responsible for retrieving data in response to queries. They are optimized for reading data efficiently and do not modify the application's state.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Event Sourcing: Often used in conjunction with CQRS, event sourcing is a pattern where the state of an application is determined by a sequence of events. Events are recorded when commands are executed, and the application's state is reconstructed by replaying these events.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: CQRS can improve the scalability of an application since commands and queries can be scaled independently. This is especially useful in scenarios where read and write workloads have different performance requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complex Domains: CQRS is particularly beneficial in applications with complex domain models where different operations have distinct requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;CQRS can provide benefits in terms of performance optimization, scalability, and flexibility in designing systems that need to handle a variety of data manipulation and retrieval operations. However, it can also introduce complexity and is best suited for situations where the separation of concerns between commands and queries is advantageous.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cqrs</category>
      <category>designpatterns</category>
      <category>programming</category>
    </item>
    <item>
      <title>𝗛𝗶𝘀𝘁𝗼𝗿𝘆 𝗢𝗳 𝗖# 𝗟𝗮𝗻𝗴𝘂𝗮𝗴𝗲</title>
      <dc:creator>Srinivas R 🇮🇳</dc:creator>
      <pubDate>Fri, 15 Sep 2023 06:09:13 +0000</pubDate>
      <link>https://dev.to/srini_vas/-4po7</link>
      <guid>https://dev.to/srini_vas/-4po7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tuuoD-5F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uy5pwclhyo3ua7s99e29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tuuoD-5F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uy5pwclhyo3ua7s99e29.png" alt="Image description" width="720" height="2045"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During more than 20 years of development, we saw 11 versions of the C# language. Every version gave us some new and interesting features. Here is a brief overview of those features:&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟭.𝟬 released with .NET 1.0 and VS2002 (January 2002).&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟭.𝟮 released with .NET 1.1 and VS2003 (April 2003). The first version is called Dispose on IEnumerators which implemented IDisposable.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟮.𝟬 released with .NET 2.0 and VS2005 (November 2005). Major new features: generics, anonymous methods, nullable types, and iterator blocks.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟯.𝟬 released with .NET 3.5 and VS2008 (November 2007). Major new features: lambda expressions, extension methods, expression trees, anonymous types, implicit typing (var), and query expressions.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟰.𝟬 released with .NET 4 and VS2010 (April 2010). Major new features: late binding (dynamic), delegate and interface generic variance, more COM support, named arguments, tuple data type, and optional parameters.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟱.𝟬 released with .NET 4.5 and VS2012 (August 2012). Major features: async programming and caller info attributes.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟲.𝟬 released with .NET 4.6 and VS2015 (July 2015). Enabled by Roslyn. Features: initializers for automatically implemented properties, using directives to import static members, exception filters, and more.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟳.𝟬 released with .NET 4.7 and VS2017 (March 2017). Major new features: tuples, ref locals and ref return, pattern matching (including pattern-based switch statements), and more.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟳.𝟭 released with VS2017 v15.3 (August 2017). New features: async main, tuple member name inference, default expression, and pattern matching with generics.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟳.𝟮 released with VS2017 v15.5 (November 2017). New features: private protected access modifier, Span, aka interior pointer, aka stackonly struct, and everything else.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟳.𝟯 released with VS2017 v15.7 (May 2018). New features: enum, delegate, and unmanaged generic type constraints. ref reassignment.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟴.𝟬 released with .NET Core 3.0 and VS2019 v16.3 (September 2019). Major new features: nullable reference-types, asynchronous streams, indices and ranges, readonly members, and more.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟵.𝟬 released with .NET 5.0 and VS2019 v16.8 (November 2020). Major new features: init-only properties, records, with-expressions, data classes, positional records, top-level programs, and improved pattern matching.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟭𝟬.𝟬 released with .NET 6.0 (November 2021). Major new features: record structs, struct parameterless constructors, interpolated string handlers, and more.&lt;/p&gt;

&lt;p&gt;🔹 𝗖# 𝟭𝟭.𝟬 released with .NET 7.0 (November 2022). Major new features: file-scoped types, generic math support, auto-default structs, pattern match Span on a constant string, and more.&lt;/p&gt;

&lt;p&gt;What features do you use the most?&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
