Tuesday, April 13, 2021

Types of NoSQL Database

NoSQL database stands for "Not Only SQL" or "Not SQL." Though a better term would be "NoREL", NoSQL caught on. Carl Strozz introduced the NoSQL concept in 1998.

Traditional RDBMS uses SQL syntax to store and retrieve data for further insights. Instead, a NoSQL database system encompasses a wide range of database technologies that can store structured, semi-structured, unstructured and polymorphic data. Let's understand about NoSQL with a diagram in this NoSQL database tutorial:

Several different varieties of NoSQL databases have been created to support specific needs and use cases. These fall into four main categories:

Key-value data stores: Key-value NoSQL databases emphasize simplicity and are very useful in accelerating an application to support high-speed read and write processing of non-transactional data. Stored values can be any type of binary object (text, video, JSON document, etc.) and are accessed via a key. The application has complete control over what is stored in the value, making this the most flexible NoSQL model. Data is partitioned and replicated across a cluster to get scalability and availability. For this reason, key value stores often do not support transactions. However, they are highly effective at scaling applications that deal with high-velocity, non-transactional data.

Document stores: Document databases typically store self-describing JSON, XML, and BSON documents. They are similar to key-value stores, but in this case, a value is a single document that stores all data related to a specific key. Popular fields in the document can be indexed to provide fast retrieval without knowing the key. Each document can have the same or a different structure.

Wide-column stores: Wide-column NoSQL databases store data in tables with rows and columns similar to RDBMS, but names and formats of columns can vary from row to row across the table. Wide-column databases group columns of related data together. A query can retrieve related data in a single operation because only the columns associated with the query are retrieved. In an RDBMS, the data would be in different rows stored in different places on disk, requiring multiple disk operations for retrieval.

Graph stores: A graph database uses graph structures to store, map, and query relationships. They provide index-free adjacency, so that adjacent elements are linked together without using an index.

Multi-modal databases leverage some combination of the four types described above and therefore can support a wider range of applications.


Wednesday, March 31, 2021

Top programming languages to learn

Coding skills are not something that can be gained in an hour or two. It comes with time and can take a lot of time in the industry to get a hang of programming languages. 

With so many programming languages available in the market, beginners are confused in choosing the right path. It is essential to understand the path the software developer will take to get the optimum and practical results.

To give you a better understanding of where to start, here are the top programming languages that the beginner programmer must be familiar with.

1. Python
It is one of the most programming languages that is recommended to learn due to its high popularity and easy syntax. It’s often said that Python’s syntax is clear, intuitive, and almost English-like, which makes it a popular choice for beginners. The programming language is famous due to the wide range of applications in high-level and general-purpose programming languages emphasizing code readability.

2. JavaScript
This is the programming language that is ruling the market with its wide range of applications, ease to learn, and compatibility with other languages. The programming language is easy to implement over the client-side for functionalities as well as server-side. Although JavaScript is primarily a front-end language run on the browser, it can also be used on the server-side through Node.js to build scalable network applications. Node.js is compatible with Linux, SunOS, Mac OS X, and Windows.

3. C/C++
This is the lower-level programming language that is used to develop several major platforms like Linus, Windows, etc. C is a procedural programming language that is ideally best for beginners.

4. C#
Like C++, C# (pronounced C Sharp) is a general-purpose, object-oriented language built on the foundations of C. It was originally designed by Microsoft as part of its .NET framework for building Windows applications. C# uses a syntax that’s similar to other C-derived languages such as C++, so it’s easy to pick up if you’re coming from another language in the C family. C# is not only the go-to for Microsoft app development, but it’s also the language mobile developers use to build cross-platform apps on the Xamarin platform. Additionally, anyone who is interested in VR development should consider learning C#. C# is the recommended language for building 3D and 2D video games using the popular Unity game engine, which produces one-third of the top games on the market.

Friday, February 5, 2021

Angular 11 Features

Angular 11 was released on Nov 11, 2020. Angular, Google’s JavaScript (TypeScript) framework for building web applications mobile or desktop. Highlights include stricter types, router performance improvements, and automatic inlining of fonts.

Other improvements in Angular 11 include:

  • Performance improvements and new APIs, with the parallel function making it easier to work with asynchronous actions in tests by enabling multiple asynchronous interactions with components in parallel.
  • Stricter types are added for DatePipe and number pipes, to catch misuses such as passing an Observable or an array.
  • Improved reporting and logging.
  • An update to the Angular Language Service, providing a more powerful and more accurate experience.
  • An update to Hot Module Replacement (HMR) support leverages the CLI to allow enablement of HMR when starting an application with ng serve.
  • Experimental Webpack 5 support offers a path to faster builds with persistent disk caching and smaller bundles thanks to CommonJS tree-shaking.
  • TSLint has been deprecated, with project creators recommending migration to ESLint.
  • For the Angular compiler, keySpan would be added to the Variable node.
  • The router in Angular 11 would change the default value of relativeLinkResolution from “legacy” to “corrected.” The migration updates RouterModule configurations that use the default value to now specifically use “legacy” to prevent breakages during updating.
  • In a fix to the core, a Trusted Types policy is being introduced in the development mode. It allows arbitrary unsafe conversions to Trusted Types to support development features. Also, a module is being added to create a Trusted Types policy for use internally by Angular.
  • New initialNavigation options are being added to legacy functionality.
  • For code refactoring in the router, the type of parameter in navigateByUrl and createUrlTree is being adjusted to be more accurate.
  • To improve router performance, ngDevMode can be used to tree-shake error messages.
  • For service-worker, an UnrecoverableStateError notification is being added, fixing an issue in which a broken state would arise where only parts of an application would load properly. This situation has arisen when the browser has evicted eagerly cached assets from the cache that cannot be found on the server anymore.
  • Support is removed for the Microsoft IE 9 and IE 10 browsers as is IE mobile support.
  • ISO week-numbering year formats support is being added to formatDate.
  • For the compiler-cli, interfaces are being defined that can be used for TemplateTypeChecker. Performance improvements have been made to compiler-cli, also.
  • For the core, a migration is being added that finds all imports and calls to the deprecated async function @angular/core/testing and replaces them with waitforasync.
  • null is now included in the types of .parent.
  • A multitude of bug fixes are planned, including an improvement to typing of common pipes and another fix to ensure TestBed is not instantiated before the override provder.
  • TypeScript 3.9 support has been removed from the compiler. An upgrade to TypeScript 4.0 is advised.

Friday, January 29, 2021

AWS Lambda Layers

Serverless developers frequently import libraries and dependencies into their AWS Lambda functions. While you can zip these dependencies as part of the build and deployment process, in many cases it’s easier to use layers instead. You can configure your Lambda function to pull in additional code and content in the form of layers. A layer is a .zip file archive that contains libraries, a custom runtime, or other dependencies. With layers, you can use libraries in your function without needing to include them in your deployment package. Layers let you keep your deployment package small, which makes development easier. You can avoid errors that can occur when you install and package dependencies with your function code. You can create layers, or use layers that AWS or an AWS customer has published. Layers support resource-based policies for granting layer usage permissions to specific AWS accounts, AWS Organizations, or all accounts.
Layers are extracted to the /opt directory in the function execution environment. Each runtime looks for libraries in a different location under /opt, depending on the language. Structure your layer so that function code can access libraries without additional configuration. You can also use the AWS Serverless Application Model (AWS SAM) to manage layers and your function's layer configuration.

Tuesday, December 29, 2020

AWS CloudShell

AWS CloudShell is a browser-based shell that makes it easy to securely manage, explore, and interact with your AWS resources. CloudShell is pre-authenticated with your console credentials. Common development and operations tools are pre-installed, so no local installation or configuration is required. With CloudShell, you can quickly run scripts with the AWS Command Line Interface (AWS CLI), experiment with AWS service APIs using the AWS SDKs, or use a range of other tools to be productive. You can use CloudShell right from your browser and at no additional cost.

Benefits

No extra credentials to manage
CloudShell inherits the credentials of the user signed in to the AWS Management Console, so there's no need to spend extra effort managing credentials locally.

Always up to date
CloudShell provides a fully managed Amazon Linux 2 environment that has the latest versions of popular tools already installed and updated. You don't need to patch the environment or update the pre-installed tools.

No cost
CloudShell provides you with a browser-based shell to run scripts and commands. It includes 1 GB of persistent storage per Region at no extra cost to you. You only pay for the AWS resources you use with CloudShell to create and run your applications.

Customizable
With 1 GB of persistent storage per Region, you can store scripts, files, configuration preferences, and additional tools in your home directory. You can begin working immediately, without customizing your environment every time you use the shell.

Link: https://aws.amazon.com/cloudshell/

Monday, November 2, 2020

Snowflake - Tasks

User-defined tasks allow scheduled execution of SQL statements. Tasks run according to a specified execution configuration, using any combination of a set interval and/or a flexible schedule using a subset of familiar cron utility syntax. Tasks currently run in user-specified warehouses but will eventually run in a serverless environment using Snowflake-supplied compute resources. Currently, a task can execute a single SQL statement, including a call to a stored procedure. Tasks can be combined with table streams for continuous ELT workflows to process recently changed table rows. Streams ensure exactly once semantics for new or changed data in a table. Tasks can also be used independently to generate periodic reports by inserting or merging rows into a report table or perform other periodic work.

Task Scheduling
There is no event source that can trigger a task; instead, a task runs on a schedule, which can be defined when creating a task (using CREATE TASK) or later (using ALTER TASK). Snowflake ensures only one instance of a task with a schedule (i.e. a standalone task or the root task in a tree of tasks) is executed at a given time. If a task is still running when the next scheduled execution time occurs, then that scheduled time is skipped.

Task History
Query the TASK_HISTORY table function to verify the task did not run. It is possible that the task ran successfully but the SQL statement in the task definition failed. In particular, note the scheduled and completed times, as well as any error code and message. If the task has a parent task (in a tree of tasks), verify whether the parent task completed successfully.

There is a 60 minute default limit on a single run of a task. This limitation was implemented as a safeguard against non-terminating tasks.

Link: https://docs.snowflake.com/en/user-guide/tasks-intro.html