DynamoDB and NoSQL databases

DynamoDB, a NoSQL database that is fast, scalable, fully managed, allows serverless functions called ‘lambda’, and flexible. Cherry on top, your data is stored on SSDs and automatically replicated across multiple Availability Zones, which provides high availability and data durability.

Let’s discuss our terms a bit, what is NoSQL? NoSQL is a non-relational database that utilizes many data structures like key-value, document, and many other. Let’s focus on using key-value pairs for retrieving data from the database. For key-value pairs each key can’t be replicated. The key-value method has high performance, high scalability, and high flexibility. Another ‘key’ feature of NoSQL databases, is the loss of the ability to perform joins. However, there is still a way to work around this dilemma. One instance, would be using multiple queries to attain the desired data. Since NoSQL queries are faster than relational queries this is a good method, to a certain degree. Additionally, you don’t need a database schema with NoSQL, in most cases you don’t need to explicitly define your schema up front and you can just create new fields as you need them. Very cool.

Why do people use NoSQL versus a relational database? “Motivations for this approach include: simplicity of design, simpler “horizontal” scaling to clusters of machines (which is a problem for relational databases), and finer control over availability. The data structures used by NoSQL databases (e.g. key-value, wide column, graph, or document) are different from those used by default in relational databases, making some operations faster in NoSQL. The particular suitability of a given NoSQL database depends on the problem it must solve. Sometimes the data structures used by NoSQL databases are also viewed as “more flexible” than relational database tables.”

So it depends, on the ‘problem it must solve’. Here’s an example of what those problems make look like (use cases). Example, wall street has been transformed by algorithmic trading and for the purpose of evaluating lots of conditions quickly, a relational database will not due. The high speeds of NoSQL databases have been a cornerstone in stock trading as of late.

Why I choose DynamoDB to write about. I’m currently studying to get my AWS developer and solutions architect certificate. I have an AWS study group that meets twice a week for four hours to work through a course to obtain the skills needed to deploy web applications in the cloud and get certified. So far I’ve learned enough to realize how much I don’t know. At least when it comes to deploying web applications made in Java, it’s not as simple as throwing your code in S3 (simple storage solution, aka Amazon’s version of dropbox or google drive) then configuring S3 to work as web hosting. With a Java application there is a lot more configuring and knowledge required to launch your code. Which is something I’m actively trying to tackle so I can get my Java code deployed to the cloud.

I’m planning on diving deeper into NoSQL databases, since this is what AWS is built from and realistically the future. Using DynamoDB, Amazon Lambda functions, API gateway, S3, and Route 53 you can create serverless architecture, which are super fast, dirt cheap, and freaking cool.

Sources: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html
http://www.dataversity.net/4-use-cases-for-nosql-databases/
https://en.wikipedia.org/wiki/NoSQL

Learning the truth about code school graduates

The intention of this post is to give some insight into Epicodus from a content perspective. As many people have already said before, you get out what you put in.

Learning what jobs code school graduates are usually qualified for has been a wake up call. When I first learned about code schools, I immediately thought they were a good way to get my feet wet in programming and get me into that Junior developer role. However, I was skeptical and I did a fair amount of research. Ultimately, my choice for code school came down to price. Currently, I am attending a code school name Epicodus. Epicodus is a beautiful place to grow as a person and a developer, but I’ve come to realize that merely doing the course material and showing up everyday will not be enough.

Recently, I was talking to fellow students from higher classes and they were pretty blunt in explaining that there is a lot of gaps in the Epicodus courses. Outdated information, skimmed concepts, and a lack of ability to pump out new content. These all contribute to the idea that Epicodus graduates may not be qualified for a Junior developer role, strictly from following along with the course material. I believe I’ll be fine, but that is do to a lot of outside work. Thanks, to my lack of financial ability I have been fighting to stay at Epicodus, including going to college full time and working as well. My weeks for the past two months have been 70+ hours long, and I’ve started to feel it. However, all my classes in college are centered around programming so the skills I have been building outside of Epicodus range from JavaScript to Java to PHP/SQL.

Okay, so I should be fine (let’s hope haha), but what is the reality for other graduates? I believe that without a proper amount of drive to push past the course material future graduates will ultimately be disappointed when graduation day arrives and the job search begins. There are plenty of ways for you to get extra reps outside of class. This could be slightly changing the course material for the day and reworking it, working on side projects, or taking Udemy/Coursera/PluralSight courses that correlate with the current language being taught. My dad made a good point the other day, he said ‘all it takes to surpass your peers is putting in 1% more effort’.

I’m gonna run with that idea and add that I believe putting in a little extra effort also compounds over time. It’s hard to notice the fact you’re making small inches forward, but a month later or six months later. The results of slightly more work will be a defining point of your growth as a developer. This is not a guide on how to get rid of your bad habits so that you can become more productive, hell I don’t think I would even be qualified to suggest anything. My solution to putting in 1% more effort was not by choice, but due to circumstance.

To wrap up, I’m glad I was informed of this knowledge gap early enough that I could keep a close eye on my progress. My goal going forward is to be at Epicodus 7 days a week. This will be tough, but it feels necessary. There is another clear benefit as well, since I’m taking three programming classes at Portland Community College (which makes me a full time student) it would also help me stay on top of my school work.