<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Database_Topic_Overview</id>
	<title>Database Topic Overview - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Database_Topic_Overview"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Database_Topic_Overview&amp;action=history"/>
	<updated>2026-04-21T08:47:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=Database_Topic_Overview&amp;diff=62044&amp;oldid=prev</id>
		<title>Apatrakov: /* NewSQL movement ⌘ */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Database_Topic_Overview&amp;diff=62044&amp;oldid=prev"/>
		<updated>2017-10-18T17:06:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;NewSQL movement ⌘&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:private]]&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;true&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: Database topic overview&lt;br /&gt;
;author: Alexander Patrakov&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SQL and NoSQL ⌘==&lt;br /&gt;
&lt;br /&gt;
* SQL = Structured Query Language&lt;br /&gt;
** Standard used by many databases&lt;br /&gt;
** We have a course: https://www.nobleprog.com/sql-fundamentals-training&lt;br /&gt;
*** Can be delivered on any traditional database&lt;br /&gt;
*** You practiced it for MySQL = you know 50% of PostgreSQL&lt;br /&gt;
* NoSQL = Not Only SQL&lt;br /&gt;
** Collective term for non-traditional databases&lt;br /&gt;
** Every NoSQL database is different&lt;br /&gt;
&lt;br /&gt;
== Let&amp;#039;s try some SQL ⌘==&lt;br /&gt;
&lt;br /&gt;
* SQL databases contain tables&lt;br /&gt;
** How to create them and alter their structure?&lt;br /&gt;
*** DDL = Data Definition Language&lt;br /&gt;
** How to Create, Read, Update, Delete rows?&lt;br /&gt;
*** DML = Data Modification Language&lt;br /&gt;
* Learn statements: CREATE TABLE, INSERT, SELECT, UPDATE, DELETE&lt;br /&gt;
* Try them on MySQL and PostgreSQL&lt;br /&gt;
** Or maybe [https://kripken.github.io/sql.js/GUI/ online in sql.js]?&lt;br /&gt;
&lt;br /&gt;
== For those who want to self-study SQL ⌘==&lt;br /&gt;
&lt;br /&gt;
* Use [https://kripken.github.io/sql.js/GUI/ this online tool] or [http://sqlfiddle.com/ another one]&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE dept (id INTEGER PRIMARY KEY, dname VARCHAR(255) NOT NULL, loc VARCHAR(255) NOT NULL);&lt;br /&gt;
INSERT INTO dept VALUES(10,&amp;#039;ACCOUNTING&amp;#039;,&amp;#039;NEW YORK&amp;#039;);&lt;br /&gt;
INSERT INTO dept VALUES(20,&amp;#039;RESEARCH&amp;#039;,&amp;#039;LONDON&amp;#039;);&lt;br /&gt;
INSERT INTO dept VALUES(30,&amp;#039;SALES&amp;#039;,&amp;#039;PARIS&amp;#039;);&lt;br /&gt;
INSERT INTO dept VALUES(40,&amp;#039;OPERATIONS&amp;#039;,&amp;#039;BERLIN&amp;#039;);&lt;br /&gt;
CREATE TABLE salgrade(id INTEGER PRIMARY KEY, losal DECIMAL(10,2) NOT NULL, hisal DECIMAL(10,2) NOT NULL);&lt;br /&gt;
INSERT INTO salgrade VALUES(1,700,1200);&lt;br /&gt;
INSERT INTO salgrade VALUES(2,1201,1400);&lt;br /&gt;
INSERT INTO salgrade VALUES(3,1401,2000);&lt;br /&gt;
INSERT INTO salgrade VALUES(4,2001,3000);&lt;br /&gt;
INSERT INTO salgrade VALUES(5,3001,9999);&lt;br /&gt;
CREATE TABLE emp (id INTEGER PRIMARY KEY, ename VARCHAR(255) NOT NULL,&lt;br /&gt;
  job VARCHAR(255) NOT NULL, mgr INTEGER REFERENCES emp(id),&lt;br /&gt;
  hiredate DATE NOT NULL, sal DECIMAL(10,2) NOT NULL,&lt;br /&gt;
  comm DECIMAL(10,2), deptno INTEGER NOT NULL REFERENCES dept(id));&lt;br /&gt;
INSERT INTO emp VALUES(7839,&amp;#039;BUSH&amp;#039;,&amp;#039;PRESIDENT&amp;#039;,NULL,&amp;#039;1981-11-17&amp;#039;,5000,NULL,10);&lt;br /&gt;
INSERT INTO emp VALUES(7698,&amp;#039;BLAIR&amp;#039;,&amp;#039;MANAGER&amp;#039;,7839,&amp;#039;1981-05-01&amp;#039;,2850,NULL,30);&lt;br /&gt;
INSERT INTO emp VALUES(7566,&amp;#039;PUTIN&amp;#039;,&amp;#039;MANAGER&amp;#039;,7839,&amp;#039;1981-04-02&amp;#039;,2975,NULL,20);&lt;br /&gt;
INSERT INTO emp VALUES(7902,&amp;#039;TOOSK&amp;#039;,&amp;#039;ANALYST&amp;#039;,7566,&amp;#039;1981-12-03&amp;#039;,3000,NULL,20);&lt;br /&gt;
INSERT INTO emp VALUES(7369,&amp;#039;THATCHER&amp;#039;,&amp;#039;CLERK&amp;#039;,7902,&amp;#039;1980-12-17&amp;#039;,800,NULL,20);&lt;br /&gt;
INSERT INTO emp VALUES(7499,&amp;#039;BAROSSO&amp;#039;,&amp;#039;SALESMAN&amp;#039;,7698,&amp;#039;1981-02-20&amp;#039;,1600,300,30);&lt;br /&gt;
INSERT INTO emp VALUES(7521,&amp;#039;WALTON&amp;#039;,&amp;#039;SALESMAN&amp;#039;,7698,&amp;#039;1981-02-22&amp;#039;,1250,500,30);&lt;br /&gt;
INSERT INTO emp VALUES(7654,&amp;#039;CHIRACK&amp;#039;,&amp;#039;SALESMAN&amp;#039;,7698,&amp;#039;1981-09-28&amp;#039;,1250,1400,30);&lt;br /&gt;
INSERT INTO emp VALUES(7782,&amp;#039;MERKEL&amp;#039;,&amp;#039;MANAGER&amp;#039;,7839,&amp;#039;1981-06-09&amp;#039;,2450,NULL,10);&lt;br /&gt;
INSERT INTO emp VALUES(7788,&amp;#039;CARNEGIE&amp;#039;,&amp;#039;ANALYST&amp;#039;,7566,&amp;#039;1982-12-09&amp;#039;,3000,NULL,20);&lt;br /&gt;
INSERT INTO emp VALUES(7844,&amp;#039;GATES&amp;#039;,&amp;#039;SALESMAN&amp;#039;,7698,&amp;#039;1981-09-08&amp;#039;,1500,0,30);&lt;br /&gt;
INSERT INTO emp VALUES(7876,&amp;#039;FORD&amp;#039;,&amp;#039;CLERK&amp;#039;,7788,&amp;#039;1983-01-12&amp;#039;,1100,NULL,20);&lt;br /&gt;
INSERT INTO emp VALUES(7900,&amp;#039;BUFFETT&amp;#039;,&amp;#039;CLERK&amp;#039;,7698,&amp;#039;1981-12-03&amp;#039;,950,NULL,30);&lt;br /&gt;
INSERT INTO emp VALUES(7934,&amp;#039;ELISON&amp;#039;,&amp;#039;CLERK&amp;#039;,7782,&amp;#039;1982-01-23&amp;#039;,1300,NULL,10);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* Click &amp;quot;Expand&amp;quot; to see the queries for populating the initial structure and content&lt;br /&gt;
* Follow [[SQL Programming]] slides and exercises&lt;br /&gt;
&lt;br /&gt;
== More SQL and DBA topics ⌘==&lt;br /&gt;
&lt;br /&gt;
* Relational algebra&lt;br /&gt;
** How to express 1:0-1, 1:N, or N:M relations using FOREIGN KEYs&lt;br /&gt;
** How to combine matching rows using a JOIN&lt;br /&gt;
* Normal forms and integrity&lt;br /&gt;
** Taught only as a part of Oracle courses, but really belong to all SQL courses&lt;br /&gt;
* Indexing&lt;br /&gt;
* Grouping and aggregation&lt;br /&gt;
* Concurrency and transactions&lt;br /&gt;
* Security&lt;br /&gt;
&lt;br /&gt;
== Two major applications ⌘==&lt;br /&gt;
&lt;br /&gt;
* Web applications&lt;br /&gt;
** Queries usually touch only a tiny fraction of data&lt;br /&gt;
** Performance is needed&lt;br /&gt;
** Achieved by a good schema, properly placed indexes, and well-written queries&lt;br /&gt;
** SQL is usually simple&lt;br /&gt;
* Data warehousing, ad-hoc analytics, reporting&lt;br /&gt;
** Real-time performance is not needed&lt;br /&gt;
** Queries sometimes go through the entire database for aggregation&lt;br /&gt;
** More advanced SQL features are used&lt;br /&gt;
&lt;br /&gt;
== Available SQL-based databases ⌘==&lt;br /&gt;
&lt;br /&gt;
* MySQL and its variants (MariaDB, MySQL Cluster, Percona Server)&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* SQLite&lt;br /&gt;
** No separate training, but mentioned as a subtopic for Android and iOS courses&lt;br /&gt;
* MS SQL Server&lt;br /&gt;
* MS Access&lt;br /&gt;
* Oracle&lt;br /&gt;
* Firebird&lt;br /&gt;
* Specialized, less common: Impala, SequoiaDB, Trafodion&lt;br /&gt;
&lt;br /&gt;
== Developer topics ⌘==&lt;br /&gt;
&lt;br /&gt;
* How to issue SQL statements from various programming languages&lt;br /&gt;
* Non-standard SQL extensions&lt;br /&gt;
** For some databases - how to write such extensions&lt;br /&gt;
* Query optimization&lt;br /&gt;
* Internals&lt;br /&gt;
&lt;br /&gt;
== ORMs ⌘==&lt;br /&gt;
&lt;br /&gt;
* There is a conceptual mismatch between software written in object-oriented style and relational databases&lt;br /&gt;
** There is a need to convert between object fields/properties and database columns&lt;br /&gt;
*** Trivial for strings and integers, non-trivial for arrays and references to other objects&lt;br /&gt;
*** One should be able to create a graph of object references and persist it to the database&lt;br /&gt;
** Solved (to some degree) by Object-Relational Managers (ORMs)&lt;br /&gt;
* Available ORMs:&lt;br /&gt;
** Java: Hibernate&lt;br /&gt;
** PHP: Doctrine (taught as a part of Symfony web framework, deserves more)&lt;br /&gt;
** Python:&lt;br /&gt;
*** Web framework neutral: SQLAlchemy, Peewee (both have no trainings, can be added to a Flask training)&lt;br /&gt;
*** Web framework specific: Django ORM, Web2py DAL (both taught as a part of the corresponding web frameworks)&lt;br /&gt;
** C#: ADO.NET (in particular, LINQ to SQL)&lt;br /&gt;
* Reality: some web developers don&amp;#039;t know SQL, because ORM provides good-enough facilities for accessing the database&lt;br /&gt;
&lt;br /&gt;
== Sysadmin topics ⌘==&lt;br /&gt;
&lt;br /&gt;
* Implicit assumptions:&lt;br /&gt;
** Sysadmins already know the basics of SQL&lt;br /&gt;
*** May or may not be true in the real world&lt;br /&gt;
** Sysadmins only need the basics of SQL + sysadmin-only SQL statements&lt;br /&gt;
* Installation &amp;amp; configuration&lt;br /&gt;
* Data safety against power loss&lt;br /&gt;
* Typical errors and how to fix them&lt;br /&gt;
* Access control&lt;br /&gt;
* Replication&lt;br /&gt;
* Performance monitoring and tuning&lt;br /&gt;
&lt;br /&gt;
== Typical problems during courses ⌘==&lt;br /&gt;
&lt;br /&gt;
* Licensing&lt;br /&gt;
** Some companies prohibit the use of evaluation copies for training purposes - please check every time!&lt;br /&gt;
** Evaluation versions may be too restricted in functionality&lt;br /&gt;
** For demonstrating replication, multiple VMs per participant = multiple Windows licenses&lt;br /&gt;
*** Only NobleProg Poland has that, and we can also try Amazon&lt;br /&gt;
* Insufficient server resources&lt;br /&gt;
** Huge problem for [https://hr.nobleprog.com/node/68403 Introduction to SQL Server 2012 Integration Services (SSIS)]&lt;br /&gt;
* Missing prerequisites&lt;br /&gt;
** Problem for [https://hr.nobleprog.com/node/114822 MS SQL Server 2016]&lt;br /&gt;
* Finding trainers that know the internals&lt;br /&gt;
** I suspect that [https://hr.nobleprog.com/node/415 PostgreSQL Administration and Development] was never delivered in full&lt;br /&gt;
*** Still present on some frontends, please evaluate and maybe delete&lt;br /&gt;
&lt;br /&gt;
== What about NoSQL? ⌘==&lt;br /&gt;
&lt;br /&gt;
* Each NoSQL database is unique&lt;br /&gt;
** The assumption that the admin already knows the basics no longer holds&lt;br /&gt;
** The admin is still not interested how to interact with this thing from Java or Python&lt;br /&gt;
*** That (and time) is in fact the only difference between [https://www.nobleprog.co.uk/cassandra-developers-course Cassandra for Developers] and [https://www.nobleprog.co.uk/cassandra-administration-course Cassandra Administration]&lt;br /&gt;
*** For Redis, the [https://www.nobleprog.co.uk/redis-developers-and-system-administrators-course outline] is the same for sysadmins and developers&lt;br /&gt;
**** Of course delivered differently - using redis-cli (for admins) or Python or C# or ... (for developers)&lt;br /&gt;
* Common points do exist&lt;br /&gt;
** No joins, no complex queries, result: more performance&lt;br /&gt;
** Usually no ACID - replaced with eventual consistency, also for performance&lt;br /&gt;
** Probably not good for ad-hoc querying by analysts&lt;br /&gt;
&lt;br /&gt;
== Why NoSQL? ⌘==&lt;br /&gt;
&lt;br /&gt;
* High availability&lt;br /&gt;
** You have to replicate data&lt;br /&gt;
** Distributed transactions (needed for ACID) are hard but solved problem&lt;br /&gt;
*** PAXOS, Raft&lt;br /&gt;
*** So no actual need to go NoSQL just because of that&lt;br /&gt;
* Big data&lt;br /&gt;
** If your data doesn&amp;#039;t fit on a single server, you have to shard it&lt;br /&gt;
** Joining sharded data is fundamentally hard&lt;br /&gt;
* Performance&lt;br /&gt;
** For simple queries, traditional relational databases spend more time in query parser and planner than actually executing the plan!&lt;br /&gt;
** Solution: limit operations to very simple ones, which don&amp;#039;t require planning&lt;br /&gt;
* Convenience&lt;br /&gt;
** Each NoSQL database was created in order to solve a particular problem&lt;br /&gt;
** If this is the same as your problem, you win&lt;br /&gt;
** E.g. graph databases are a win if you have many N:N relationships - queries are easier to write than in SQL&lt;br /&gt;
* It&amp;#039;s trendy&lt;br /&gt;
** Mostly applies to MongoDB + Node.js, see also &amp;quot;MEAN stack&amp;quot;&lt;br /&gt;
** &amp;quot;I know nothing about storing data at all, and Mongo looks simple, so I don&amp;#039;t have to understand anything&amp;quot; ([https://www.quora.com/When-we-should-use-MongoDB source])&lt;br /&gt;
*** Not a valid reason, see [http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/ this blog post from 2013]&lt;br /&gt;
&lt;br /&gt;
== NewSQL movement ⌘==&lt;br /&gt;
&lt;br /&gt;
* SQL is a powerful query language&lt;br /&gt;
* For database authors, using it means that users already know 50% of their database&lt;br /&gt;
* There is no direct conflict between SQL and distributed systems&lt;br /&gt;
** Yes, joins are fundamentally slow, but users know, and they need joins, so...&lt;br /&gt;
* See [https://blog.timescale.com/why-sql-beating-nosql-what-this-means-for-future-of-data-time-series-database-348b777b847a a case study from Timescale DB]&lt;br /&gt;
** &amp;quot;SQL has become the narrow waist for data analysis&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Topics to cover in NoSQL courses ⌘==&lt;br /&gt;
&lt;br /&gt;
* Common:&lt;br /&gt;
** Data model&lt;br /&gt;
** Query language&lt;br /&gt;
** Use cases&lt;br /&gt;
* Developer:&lt;br /&gt;
** Language bindings&lt;br /&gt;
** Consistency guarantees&lt;br /&gt;
** Performance tips related to specific ways of writing queries&lt;br /&gt;
* Admin:&lt;br /&gt;
** Replication and sharding&lt;br /&gt;
** Performance tuning without rewriting the queries&lt;br /&gt;
&lt;br /&gt;
== Available NoSQL databases ⌘==&lt;br /&gt;
&lt;br /&gt;
* People sometimes classify them into column-oriented stores, document stores, key-value stores, and so on&lt;br /&gt;
** Still there is a lot of variability inside each class&lt;br /&gt;
* People sometimes attempt to classify them as CA, CP, or AP&lt;br /&gt;
** Reference to Brewer&amp;#039;s CAP theorem&lt;br /&gt;
** This classification should be viewed as secondary&lt;br /&gt;
*** The primary classification should be according to their purpose&lt;br /&gt;
* [https://www.nobleprog.co.uk/cassandra-developers-course Cassandra] (good for time-series data, for analytics and aggregation, has SQL-like syntax without joins)&lt;br /&gt;
* [https://www.nobleprog.co.uk/redis-developers-and-system-administrators-course Redis] (data structure server, very low level, all data in memory, very fast, often used for caches and message queues)&lt;br /&gt;
* [https://www.nobleprog.co.uk/hbase-developers-course HBase] (built on top of Hadoop, so good for Big Data)&lt;br /&gt;
* [https://www.nobleprog.co.uk/mongodb-developers-training MongoDB] (stores and searches JSON documents)&lt;br /&gt;
* [https://www.nobleprog.co.uk/solr-developers-course Solr] and [https://www.nobleprog.co.uk/implementation-and-administration-elasticsearch-course Elasticsearch] (full text search oriented)&lt;br /&gt;
* Missing trainings:&lt;br /&gt;
** &amp;lt;s&amp;gt;A good overview of the ecosystem (but is this possible to sell? possible at all?)&amp;lt;/s&amp;gt;&lt;br /&gt;
*** [https://www.nobleprog.co.uk/big-data-storage-solution-nosql-course This outline] is close but with strong emphasis on Big Data, and still never delivered&lt;br /&gt;
** Tarantool (similar to Redis but better replication and scripting, used in Mail.ru)&lt;br /&gt;
** Neo4j (graph database, good for representing connections between arbitrary objects)&lt;br /&gt;
&lt;br /&gt;
== Visual guide to NoSQL systems ⌘==&lt;br /&gt;
&lt;br /&gt;
[http://blog.nahurst.com/visual-guide-to-nosql-systems Source]&lt;br /&gt;
&lt;br /&gt;
[[File:Visual guide to nosql systems.png|700px]]&lt;br /&gt;
&lt;br /&gt;
[https://jandiandme.blogspot.se/2013/06/mongodb-and-cap-theorem.html Classification is disputed]&lt;br /&gt;
&lt;br /&gt;
== Key-Value stores ⌘==&lt;br /&gt;
&lt;br /&gt;
* Very simple operations&lt;br /&gt;
** SET key value&lt;br /&gt;
** GET key&lt;br /&gt;
** DELETE key&lt;br /&gt;
* Canonical example: memcached&lt;br /&gt;
* A bit more complicated example: Redis&lt;br /&gt;
** Positioned as a data structure server, not key-value store&lt;br /&gt;
** Supports sharding and master-slave replication&lt;br /&gt;
* Fast because of simple operations&lt;br /&gt;
&lt;br /&gt;
== Cassandra ⌘==&lt;br /&gt;
&lt;br /&gt;
* Data model:&lt;br /&gt;
** Tables (formerly called &amp;quot;column families&amp;quot;), like in relational databases&lt;br /&gt;
** There is schema, but it&amp;#039;s cheap to add new columns&lt;br /&gt;
** Querying is possible only by keys, not by arbitrary fields&lt;br /&gt;
** No joins&lt;br /&gt;
*** May be possible to emulate, inefficiently, client-side or with MapReduce jobs&lt;br /&gt;
*** See also Spark&lt;br /&gt;
* Consistency model:&lt;br /&gt;
** Distributed system, high availability across multiple data centers, no single point of failure&lt;br /&gt;
** No ACID&lt;br /&gt;
** Lightweight transactions&lt;br /&gt;
** Last Write Wins&lt;br /&gt;
* Internals:&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Log-structured_merge-tree Log-structured merge tree], memtables and SSTables, tombstones, immutable disk files&lt;br /&gt;
* Use cases:&lt;br /&gt;
** Storing and aggregating big data&lt;br /&gt;
** Easy to add nodes to the cluster&lt;br /&gt;
** Performs best when data is never deleted&lt;br /&gt;
*** [https://blog.discordapp.com/how-discord-stores-billions-of-messages-7fa6ec7ee4c7 Case study]: keeping message history of Discord - why they migrated from MongoDB&lt;br /&gt;
** See also [https://www.datastax.com/2014/06/what-are-people-using-cassandra-for this overview]&lt;br /&gt;
&lt;br /&gt;
== MongoDB ⌘==&lt;br /&gt;
&lt;br /&gt;
* Stores JSON documents&lt;br /&gt;
** Has a JavaScript query API&lt;br /&gt;
** Integrates well with Node.js&lt;br /&gt;
* No schema&lt;br /&gt;
** So migrations are not 100% necessary&lt;br /&gt;
** It&amp;#039;s common to store old data in old format, and reinterpret in the application on the fly&lt;br /&gt;
* Strongly consistent by default&lt;br /&gt;
* Scales horizontally&lt;br /&gt;
** but selects Consistency over Availability&lt;br /&gt;
&lt;br /&gt;
== Trainer feedback on our Cassandra courses ⌘==&lt;br /&gt;
&lt;br /&gt;
* Trainer: Renhart Gittens&lt;br /&gt;
* https://www.nobleprog.co.uk/cassandra-developers-course&lt;br /&gt;
** No feedback&lt;br /&gt;
* https://www.nobleprog.co.uk/cassandra-administration-course	&lt;br /&gt;
** This is basically the developers course with the Datamodeling labs and Cassandra drivers section omitted to fit it into 2 days. I suppose more emphasis would be placed on the admin components over the 2 days.&lt;br /&gt;
* https://www.nobleprog.co.uk/training/fundamentals-cassandra-db	&lt;br /&gt;
** Should be updated to refer to Cassandra 3.0. This 3-day course is probably superseded by the cassandra-administration-course which drops the reference to Cassandra 2.0 but the extra day gives more opportunity to explore Cassandra internals&lt;br /&gt;
* https://www.nobleprog.co.uk/apache-cassandra-2x-core-internals-course	&lt;br /&gt;
** This course is dated - refers to version 2.x and the use of rackspace and installing into the cloud? While Apache Cassandra 2.2 is still supported its end of life cannot be very far away.&lt;br /&gt;
&lt;br /&gt;
== Other troubles with Cassandra courses ⌘==&lt;br /&gt;
&lt;br /&gt;
* Only one trouble: system requirements&lt;br /&gt;
** Needs 4 GB of RAM by default&lt;br /&gt;
*** Downscaling is possible, but the trainer is against it&lt;br /&gt;
**** Would harm the course content by making it impossible to illustrate various database decisions&lt;br /&gt;
** The server in USA has only 32 GB of RAM, so we can&amp;#039;t accept more than 6-7 delegates&lt;/div&gt;</summary>
		<author><name>Apatrakov</name></author>
	</entry>
</feed>