This repository is a collection of all-things database. It includes some fundamental concepts of databases, code samples, interview questions and more.
Index:
| DBMS | Model | Description | Runtime | Link |
|---|---|---|---|---|
| MySQL | Relational | Mysql basic commands | Shell | link |
| MongoDB | Document | MongoDB basic commands | Shell | link |
This section contains sample codes for database operations. For python, there are several options like mysql-connector, pymysql, MySQLdb, SqlAlchemy, etc.
| DBMS | Model | Description | Runtime | Sample Code | Docs |
|---|---|---|---|---|---|
| MySQL | Relational | Python mysql connector code sample | Python | link | docs |
| MySQL | Relational | PyMySQL code sample | Python | link | docs |
| PostgreSQL | Relational | PostgreSQL using psycopg2 code sample | Python | link | docs |
| MongoDB | Document | MongoDB NoSQL database code sample | Python | link | docs |
| SQS | Queue | AWS Simple Queue Service operations | Python | link | docs |
| ActiveMQ | Queue | MQ Producer and MQ Consumer | Python | link, link | docs |
| ActiveMQ | Queue | MQ Producer and MQ Consumer | Java | link, link | docs |
| OracleDB | Relational | OracleDB sample code | Python | link | docs |
| Kinesis | Stream | AWS Kinesis stream sample code. | Python | link, link | docs |
| Redis | In-memory | Redis code sample in python. | Python | link | docs |
| Neo4j | Graph | Graph database using neo4j-driver | Python | link | docs |
| DynamoDB | Document | DynamoDB basic operations | Python | link | docs |
| ElasticSearch | Search | ElasticSearch basic operations | Python | link | docs |
| AWS Neptune | Graph | Connecting to AWS Neptune with Gremlin | Python | link | docs |
| Cassandra | Wide-column | Cassandra basic operations | Python | link | docs |
| Amazon Aurora | MySQL | Basic Operations for Aurora DB | Python | link | docs |
This section some characteristics and comparison points between different database technologies.
| Property | Relational DB | NoSQL DB | Document DB | In-memory DB | Graph DB | Search DB | Time-series DB | Ledger DB | Queues | Streams |
|---|---|---|---|---|---|---|---|---|---|---|
| Type | Relational | Non-Relational | Non-Relational | Non-Relational | Relational | Non-Relational | Relational | Non-Relational | Non-Relational | Non-Relational |
| Data | Structured | Un-structured | Un-structured | Un-structured | Un-structured | Semi-structured | Structured | Chain | Un-structured | Un-structured |
| Data format | Records, tuples | JSON | JSON | JSON | N/A | JSON | JSON | JSON | Objects | Objects |
| Scalability | Vertical | Horizontal | Horizontal | Horizontal | Horizontal | Horizontal | Horizontal | Horizontal | Horizontal | Horizontal |
| Record type | Flat | Hierarchical | Hierarchical | Hierarchical | Hierarchical | Hierarchical | Flat, Hierarchical | Hierarchical | Objects | Objects |
| Applications | CRM, Finance | Shopping cart | Content Management | Leaderboards | Social media | Product catalog | IoT applications | Cryptocurrency | Queuing tasks | Weather data |
| Complex queries | Yes | No | No | No | No | No | No | No | N/A | N/A |
| Property | ACID | CAP theorem | CAP theorem | CAP theorem | CAP theorem | CAP theorem | ACID | N/A | N/A | N/A |
| Engine(s) | MySQL, PostgresSQL | Cassandra, DynamoDB | MongoDB, DocumentDB | Redis, Memcached | Neo4j | Elasticsearch | InfluxDB | AWS QLDB | ActiveMQ, AWS SQS | Apache Kafka, AWS Kinesis |
Anyone is welcomed to contribute to this repository. If you would like to make a change, open a pull request. For issues and discussion visit the Issue Tracker.
The contents of this repository is merely for educational purpose. The content may not be accurate or up-to-date.
