Alternatives to SQLAlchemy logo

Alternatives to SQLAlchemy

Django, Pandas, Entity Framework, peewee, and MySQL are the most popular alternatives and competitors to SQLAlchemy.
993
506
+ 1
7

What is SQLAlchemy and what are its top alternatives?

SQLAlchemy is a popular Python SQL toolkit and Object-Relational Mapping (ORM) library that provides a powerful and flexible way to interact with databases. It allows developers to work with high-level ORM models as well as low-level SQL expressions, giving them the flexibility to choose the level of abstraction they need. SQLAlchemy supports a wide range of database systems and provides features like query building, schema creation, and transaction management. However, despite its flexibility and feature-rich nature, SQLAlchemy can have a steep learning curve for beginners and may be overkill for simple projects.

  1. Pony ORM: Pony ORM is a simpler and more intuitive alternative to SQLAlchemy with a focus on convenience and ease of use. It provides automatic schema generation, entity relationships, and query building capabilities like SQLAlchemy but in a more user-friendly way. Pros: Easy to learn and use; Cons: Limited database support.
  2. Peewee: Peewee is a lightweight ORM with a small footprint that aims to be simple, fast, and easy to use. It offers a similar feature set to SQLAlchemy but with a focus on performance and simplicity. Pros: Lightweight and fast; Cons: Lack of advanced features compared to SQLAlchemy.
  3. Django ORM: Django ORM is the built-in ORM system of the Django web framework, providing a seamless integration of database operations within Django applications. It offers a high-level ORM API that simplifies database interactions and includes features like model relationships, queries, and migrations. Pros: Great integration with Django; Cons: Limited standalone usage without Django.
  4. SQLObject: SQLObject is a simple ORM library that focuses on ease of use and minimal boilerplate code. It provides object-oriented interfaces for interacting with databases and supports various database backends. Pros: Simplicity and minimal setup; Cons: Limited documentation and community support.
  5. Tortoise-ORM: Tortoise-ORM is an async ORM inspired by Django ORM that supports asyncio and makes it easy to work with databases in asynchronous Python applications. It offers a familiar syntax for defining models and querying data asynchronously. Pros: Async support; Cons: Less mature than SQLAlchemy.
  6. Records: Records is a simple and high-performance library that provides a higher-level interface for working with databases in Python. It aims to simplify common database operations while maintaining performance. Pros: Lightweight and easy to use; Cons: Limited features compared to SQLAlchemy.
  7. Tornado-SQLAlchemy: Tornado-SQLAlchemy is an extension for integrating SQLAlchemy with the Tornado web framework, allowing developers to build asynchronous web applications with SQLAlchemy support. It provides seamless integration with Tornado's asynchronous capabilities. Pros: Integrates well with Tornado; Cons: Limited standalone usage outside of Tornado.
  8. Gino: Gino is an asyncio ORM built on top of SQLAlchemy core that aims to combine the power of SQLAlchemy with the flexibility of asynchronous programming in Python. It provides an easy way to work with databases in async applications. Pros: Async support; Cons: Less feature-rich than SQLAlchemy.
  9. SQLAlchemy-Utils: SQLAlchemy-Utils is a companion library to SQLAlchemy that provides various utility functions and data types for common database tasks. It adds extra functionality to SQLAlchemy models and queries, making them more powerful and versatile. Pros: Extends SQLAlchemy's capabilities; Cons: Adds complexity to projects.
  10. PeeWee-Async: PeeWee-Async is an asynchronous ORM built on top of the Peewee ORM library, adding support for asyncio and async/await syntax. It allows developers to work with databases in async applications using the familiar Peewee API. Pros: Async support; Cons: Limited in terms of features compared to SQLAlchemy.

Top Alternatives to SQLAlchemy

  • Django
    Django

    Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. ...

  • Pandas
    Pandas

    Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more. ...

  • Entity Framework
    Entity Framework

    It is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write. ...

  • peewee
    peewee

    A small, expressive orm, written in python (2.6+, 3.2+), with built-in support for sqlite, mysql and postgresql and special extensions like hstore. ...

  • MySQL
    MySQL

    The MySQL software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software. ...

  • PostgreSQL
    PostgreSQL

    PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. ...

  • MongoDB
    MongoDB

    MongoDB stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema. MongoDB was also designed for high availability and scalability, with built-in replication and auto-sharding. ...

  • Redis
    Redis

    Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. ...

SQLAlchemy alternatives & related posts

Django logo

Django

37.7K
4.2K
The Web framework for perfectionists with deadlines
37.7K
4.2K
PROS OF DJANGO
  • 673
    Rapid development
  • 487
    Open source
  • 425
    Great community
  • 379
    Easy to learn
  • 277
    Mvc
  • 232
    Beautiful code
  • 223
    Elegant
  • 207
    Free
  • 203
    Great packages
  • 194
    Great libraries
  • 80
    Comes with auth and crud admin panel
  • 79
    Restful
  • 78
    Powerful
  • 76
    Great documentation
  • 72
    Great for web
  • 57
    Python
  • 43
    Great orm
  • 41
    Great for api
  • 32
    All included
  • 29
    Fast
  • 25
    Web Apps
  • 23
    Clean
  • 23
    Easy setup
  • 21
    Used by top startups
  • 19
    Sexy
  • 19
    ORM
  • 15
    The Django community
  • 14
    Allows for very rapid development with great libraries
  • 14
    Convention over configuration
  • 11
    King of backend world
  • 10
    Full stack
  • 10
    Great MVC and templating engine
  • 8
    Mvt
  • 8
    Fast prototyping
  • 7
    Its elegant and practical
  • 7
    Easy to develop end to end AI Models
  • 7
    Batteries included
  • 6
    Have not found anything that it can't do
  • 6
    Very quick to get something up and running
  • 6
    Cross-Platform
  • 5
    Zero code burden to change databases
  • 5
    Great peformance
  • 5
    Python community
  • 5
    Easy Structure , useful inbuilt library
  • 4
    Easy to use
  • 4
    Map
  • 4
    Easy to change database manager
  • 4
    Full-Text Search
  • 4
    Just the right level of abstraction
  • 4
    Many libraries
  • 4
    Modular
  • 4
    Easy
  • 3
    Scaffold
  • 1
    Node js
  • 1
    Built in common security
  • 1
    Great default admin panel
  • 1
    Scalable
  • 1
    Cons
  • 1
    Gigante ta
  • 1
    Fastapi
  • 0
    Rails
CONS OF DJANGO
  • 26
    Underpowered templating
  • 22
    Autoreload restarts whole server
  • 22
    Underpowered ORM
  • 15
    URL dispatcher ignores HTTP method
  • 10
    Internal subcomponents coupling
  • 8
    Not nodejs
  • 8
    Configuration hell
  • 7
    Admin
  • 5
    Not as clean and nice documentation like Laravel
  • 4
    Python
  • 3
    Not typed
  • 3
    Bloated admin panel included
  • 2
    Overwhelming folder structure
  • 2
    InEffective Multithreading
  • 1
    Not type safe

related Django posts

Dmitry Mukhin
Engineer at Uploadcare · | 25 upvotes · 2.6M views

Simple controls over complex technologies, as we put it, wouldn't be possible without neat UIs for our user areas including start page, dashboard, settings, and docs.

Initially, there was Django. Back in 2011, considering our Python-centric approach, that was the best choice. Later, we realized we needed to iterate on our website more quickly. And this led us to detaching Django from our front end. That was when we decided to build an SPA.

For building user interfaces, we're currently using React as it provided the fastest rendering back when we were building our toolkit. It’s worth mentioning Uploadcare is not a front-end-focused SPA: we aren’t running at high levels of complexity. If it were, we’d go with Ember.js.

However, there's a chance we will shift to the faster Preact, with its motto of using as little code as possible, and because it makes more use of browser APIs. One of our future tasks for our front end is to configure our Webpack bundler to split up the code for different site sections. For styles, we use PostCSS along with its plugins such as cssnano which minifies all the code.

All that allows us to provide a great user experience and quickly implement changes where they are needed with as little code as possible.

See more

Hey, so I developed a basic application with Python. But to use it, you need a python interpreter. I want to add a GUI to make it more appealing. What should I choose to develop a GUI? I have very basic skills in front end development (CSS, JavaScript). I am fluent in python. I'm looking for a tool that is easy to use and doesn't require too much code knowledge. I have recently tried out Flask, but it is kinda complicated. Should I stick with it, move to Django, or is there another nice framework to use?

See more
Pandas logo

Pandas

1.7K
23
High-performance, easy-to-use data structures and data analysis tools for the Python programming language
1.7K
23
PROS OF PANDAS
  • 21
    Easy data frame management
  • 2
    Extensive file format compatibility
CONS OF PANDAS
    Be the first to leave a con

    related Pandas posts

    Server side

    We decided to use Python for our backend because it is one of the industry standard languages for data analysis and machine learning. It also has a lot of support due to its large user base.

    • Web Server: We chose Flask because we want to keep our machine learning / data analysis and the web server in the same language. Flask is easy to use and we all have experience with it. Postman will be used for creating and testing APIs due to its convenience.

    • Machine Learning: We decided to go with PyTorch for machine learning since it is one of the most popular libraries. It is also known to have an easier learning curve than other popular libraries such as Tensorflow. This is important because our team lacks ML experience and learning the tool as fast as possible would increase productivity.

    • Data Analysis: Some common Python libraries will be used to analyze our data. These include NumPy, Pandas , and matplotlib. These tools combined will help us learn the properties and characteristics of our data. Jupyter notebook will be used to help organize the data analysis process, and improve the code readability.

    Client side

    • UI: We decided to use React for the UI because it helps organize the data and variables of the application into components, making it very convenient to maintain our dashboard. Since React is one of the most popular front end frameworks right now, there will be a lot of support for it as well as a lot of potential new hires that are familiar with the framework. CSS 3 and HTML5 will be used for the basic styling and structure of the web app, as they are the most widely used front end languages.

    • State Management: We decided to use Redux to manage the state of the application since it works naturally to React. Our team also already has experience working with Redux which gave it a slight edge over the other state management libraries.

    • Data Visualization: We decided to use the React-based library Victory to visualize the data. They have very user friendly documentation on their official website which we find easy to learn from.

    Cache

    • Caching: We decided between Redis and memcached because they are two of the most popular open-source cache engines. We ultimately decided to use Redis to improve our web app performance mainly due to the extra functionalities it provides such as fine-tuning cache contents and durability.

    Database

    • Database: We decided to use a NoSQL database over a relational database because of its flexibility from not having a predefined schema. The user behavior analytics has to be flexible since the data we plan to store may change frequently. We decided on MongoDB because it is lightweight and we can easily host the database with MongoDB Atlas . Everyone on our team also has experience working with MongoDB.

    Infrastructure

    • Deployment: We decided to use Heroku over AWS, Azure, Google Cloud because it is free. Although there are advantages to the other cloud services, Heroku makes the most sense to our team because our primary goal is to build an MVP.

    Other Tools

    • Communication Slack will be used as the primary source of communication. It provides all the features needed for basic discussions. In terms of more interactive meetings, Zoom will be used for its video calls and screen sharing capabilities.

    • Source Control The project will be stored on GitHub and all code changes will be done though pull requests. This will help us keep the codebase clean and make it easy to revert changes when we need to.

    See more

    Should I continue learning Django or take this Spring opportunity? I have been coding in python for about 2 years. I am currently learning Django and I am enjoying it. I also have some knowledge of data science libraries (Pandas, NumPy, scikit-learn, PyTorch). I am currently enhancing my web development and software engineering skills and may shift later into data science since I came from a medical background. The issue is that I am offered now a very trustworthy 9 months program teaching Java/Spring. The graduates of this program work directly in well know tech companies. Although I have been planning to continue with my Python, the other opportunity makes me hesitant since it will put me to work in a specific roadmap with deadlines and mentors. I also found on glassdoor that Spring jobs are way more than Django. Should I apply for this program or continue my journey?

    See more
    Entity Framework logo

    Entity Framework

    657
    19
    An object-relational mapper that enables .NET developers to work with relational data
    657
    19
    PROS OF ENTITY FRAMEWORK
    • 6
      LINQ
    • 3
      Object Oriented
    • 3
      Strongly Object-Oriented
    • 2
      Multiple approach (Model/Database/Code) first
    • 2
      Code first approach
    • 1
      Auto generated code
    • 1
      Model first approach
    • 1
      Strongly typed entities
    • 0
      Database first
    CONS OF ENTITY FRAMEWORK
      Be the first to leave a con

      related Entity Framework posts

      Hi Friends, I am planning to create a web and mobile app for eCommerce purposes, which is very similar to Swiggy.com/Zomato. Started this app and created API using .NET Core, Entity Framework, and Microsoft SQL Server as DB. Consuming this API in Flutter for mobile and web UI. Just want some help and suggestions about this selection. Worrying about the application's scalability and performance, please suggest me a good architecture to create this application, which may be used by more people over a period of time.

      See more
      peewee logo

      peewee

      50
      19
      A small, expressive ORM -- supports postgresql, mysql and sqlite
      50
      19
      PROS OF PEEWEE
      • 7
        Easy to start
      • 4
        Free
      • 4
        High Performance
      • 4
        Open Source
      CONS OF PEEWEE
        Be the first to leave a con

        related peewee posts

        MySQL logo

        MySQL

        125.6K
        3.8K
        The world's most popular open source database
        125.6K
        3.8K
        PROS OF MYSQL
        • 800
          Sql
        • 679
          Free
        • 562
          Easy
        • 528
          Widely used
        • 490
          Open source
        • 180
          High availability
        • 160
          Cross-platform support
        • 104
          Great community
        • 79
          Secure
        • 75
          Full-text indexing and searching
        • 26
          Fast, open, available
        • 16
          Reliable
        • 16
          SSL support
        • 15
          Robust
        • 9
          Enterprise Version
        • 7
          Easy to set up on all platforms
        • 3
          NoSQL access to JSON data type
        • 1
          Relational database
        • 1
          Easy, light, scalable
        • 1
          Sequel Pro (best SQL GUI)
        • 1
          Replica Support
        CONS OF MYSQL
        • 16
          Owned by a company with their own agenda
        • 3
          Can't roll back schema changes

        related MySQL posts

        Nick Rockwell
        SVP, Engineering at Fastly · | 46 upvotes · 4.1M views

        When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?

        So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.

        React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.

        Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.

        See more
        Tim Abbott

        We've been using PostgreSQL since the very early days of Zulip, but we actually didn't use it from the beginning. Zulip started out as a MySQL project back in 2012, because we'd heard it was a good choice for a startup with a wide community. However, we found that even though we were using the Django ORM for most of our database access, we spent a lot of time fighting with MySQL. Issues ranged from bad collation defaults, to bad query plans which required a lot of manual query tweaks.

        We ended up getting so frustrated that we tried out PostgresQL, and the results were fantastic. We didn't have to do any real customization (just some tuning settings for how big a server we had), and all of our most important queries were faster out of the box. As a result, we were able to delete a bunch of custom queries escaping the ORM that we'd written to make the MySQL query planner happy (because postgres just did the right thing automatically).

        And then after that, we've just gotten a ton of value out of postgres. We use its excellent built-in full-text search, which has helped us avoid needing to bring in a tool like Elasticsearch, and we've really enjoyed features like its partial indexes, which saved us a lot of work adding unnecessary extra tables to get good performance for things like our "unread messages" and "starred messages" indexes.

        I can't recommend it highly enough.

        See more
        PostgreSQL logo

        PostgreSQL

        98.4K
        3.5K
        A powerful, open source object-relational database system
        98.4K
        3.5K
        PROS OF POSTGRESQL
        • 764
          Relational database
        • 510
          High availability
        • 439
          Enterprise class database
        • 383
          Sql
        • 304
          Sql + nosql
        • 173
          Great community
        • 147
          Easy to setup
        • 131
          Heroku
        • 130
          Secure by default
        • 113
          Postgis
        • 50
          Supports Key-Value
        • 48
          Great JSON support
        • 34
          Cross platform
        • 33
          Extensible
        • 28
          Replication
        • 26
          Triggers
        • 23
          Multiversion concurrency control
        • 23
          Rollback
        • 21
          Open source
        • 18
          Heroku Add-on
        • 17
          Stable, Simple and Good Performance
        • 15
          Powerful
        • 13
          Lets be serious, what other SQL DB would you go for?
        • 11
          Good documentation
        • 9
          Scalable
        • 8
          Free
        • 8
          Reliable
        • 8
          Intelligent optimizer
        • 7
          Transactional DDL
        • 7
          Modern
        • 6
          One stop solution for all things sql no matter the os
        • 5
          Relational database with MVCC
        • 5
          Faster Development
        • 4
          Full-Text Search
        • 4
          Developer friendly
        • 3
          Excellent source code
        • 3
          Free version
        • 3
          Great DB for Transactional system or Application
        • 3
          Relational datanbase
        • 3
          search
        • 3
          Open-source
        • 2
          Text
        • 2
          Full-text
        • 1
          Can handle up to petabytes worth of size
        • 1
          Composability
        • 1
          Multiple procedural languages supported
        • 0
          Native
        CONS OF POSTGRESQL
        • 10
          Table/index bloatings

        related PostgreSQL posts

        Simon Reymann
        Senior Fullstack Developer at QUANTUSflow Software GmbH · | 30 upvotes · 11.6M views

        Our whole DevOps stack consists of the following tools:

        • GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
        • Respectively Git as revision control system
        • SourceTree as Git GUI
        • Visual Studio Code as IDE
        • CircleCI for continuous integration (automatize development process)
        • Prettier / TSLint / ESLint as code linter
        • SonarQube as quality gate
        • Docker as container management (incl. Docker Compose for multi-container application management)
        • VirtualBox for operating system simulation tests
        • Kubernetes as cluster management for docker containers
        • Heroku for deploying in test environments
        • nginx as web server (preferably used as facade server in production environment)
        • SSLMate (using OpenSSL) for certificate management
        • Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
        • PostgreSQL as preferred database system
        • Redis as preferred in-memory database/store (great for caching)

        The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:

        • Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
        • Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
        • Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
        • Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
        • Scalability: All-in-one framework for distributed systems.
        • Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
        See more
        Jeyabalaji Subramanian

        Recently we were looking at a few robust and cost-effective ways of replicating the data that resides in our production MongoDB to a PostgreSQL database for data warehousing and business intelligence.

        We set ourselves the following criteria for the optimal tool that would do this job: - The data replication must be near real-time, yet it should NOT impact the production database - The data replication must be horizontally scalable (based on the load), asynchronous & crash-resilient

        Based on the above criteria, we selected the following tools to perform the end to end data replication:

        We chose MongoDB Stitch for picking up the changes in the source database. It is the serverless platform from MongoDB. One of the services offered by MongoDB Stitch is Stitch Triggers. Using stitch triggers, you can execute a serverless function (in Node.js) in real time in response to changes in the database. When there are a lot of database changes, Stitch automatically "feeds forward" these changes through an asynchronous queue.

        We chose Amazon SQS as the pipe / message backbone for communicating the changes from MongoDB to our own replication service. Interestingly enough, MongoDB stitch offers integration with AWS services.

        In the Node.js function, we wrote minimal functionality to communicate the database changes (insert / update / delete / replace) to Amazon SQS.

        Next we wrote a minimal micro-service in Python to listen to the message events on SQS, pickup the data payload & mirror the DB changes on to the target Data warehouse. We implemented source data to target data translation by modelling target table structures through SQLAlchemy . We deployed this micro-service as AWS Lambda with Zappa. With Zappa, deploying your services as event-driven & horizontally scalable Lambda service is dumb-easy.

        In the end, we got to implement a highly scalable near realtime Change Data Replication service that "works" and deployed to production in a matter of few days!

        See more
        MongoDB logo

        MongoDB

        93.7K
        4.1K
        The database for giant ideas
        93.7K
        4.1K
        PROS OF MONGODB
        • 828
          Document-oriented storage
        • 593
          No sql
        • 553
          Ease of use
        • 464
          Fast
        • 410
          High performance
        • 255
          Free
        • 218
          Open source
        • 180
          Flexible
        • 145
          Replication & high availability
        • 112
          Easy to maintain
        • 42
          Querying
        • 39
          Easy scalability
        • 38
          Auto-sharding
        • 37
          High availability
        • 31
          Map/reduce
        • 27
          Document database
        • 25
          Easy setup
        • 25
          Full index support
        • 16
          Reliable
        • 15
          Fast in-place updates
        • 14
          Agile programming, flexible, fast
        • 12
          No database migrations
        • 8
          Easy integration with Node.Js
        • 8
          Enterprise
        • 6
          Enterprise Support
        • 5
          Great NoSQL DB
        • 4
          Support for many languages through different drivers
        • 3
          Schemaless
        • 3
          Aggregation Framework
        • 3
          Drivers support is good
        • 2
          Fast
        • 2
          Managed service
        • 2
          Easy to Scale
        • 2
          Awesome
        • 2
          Consistent
        • 1
          Good GUI
        • 1
          Acid Compliant
        CONS OF MONGODB
        • 6
          Very slowly for connected models that require joins
        • 3
          Not acid compliant
        • 2
          Proprietary query language

        related MongoDB posts

        Jeyabalaji Subramanian

        Recently we were looking at a few robust and cost-effective ways of replicating the data that resides in our production MongoDB to a PostgreSQL database for data warehousing and business intelligence.

        We set ourselves the following criteria for the optimal tool that would do this job: - The data replication must be near real-time, yet it should NOT impact the production database - The data replication must be horizontally scalable (based on the load), asynchronous & crash-resilient

        Based on the above criteria, we selected the following tools to perform the end to end data replication:

        We chose MongoDB Stitch for picking up the changes in the source database. It is the serverless platform from MongoDB. One of the services offered by MongoDB Stitch is Stitch Triggers. Using stitch triggers, you can execute a serverless function (in Node.js) in real time in response to changes in the database. When there are a lot of database changes, Stitch automatically "feeds forward" these changes through an asynchronous queue.

        We chose Amazon SQS as the pipe / message backbone for communicating the changes from MongoDB to our own replication service. Interestingly enough, MongoDB stitch offers integration with AWS services.

        In the Node.js function, we wrote minimal functionality to communicate the database changes (insert / update / delete / replace) to Amazon SQS.

        Next we wrote a minimal micro-service in Python to listen to the message events on SQS, pickup the data payload & mirror the DB changes on to the target Data warehouse. We implemented source data to target data translation by modelling target table structures through SQLAlchemy . We deployed this micro-service as AWS Lambda with Zappa. With Zappa, deploying your services as event-driven & horizontally scalable Lambda service is dumb-easy.

        In the end, we got to implement a highly scalable near realtime Change Data Replication service that "works" and deployed to production in a matter of few days!

        See more
        Robert Zuber

        We use MongoDB as our primary #datastore. Mongo's approach to replica sets enables some fantastic patterns for operations like maintenance, backups, and #ETL.

        As we pull #microservices from our #monolith, we are taking the opportunity to build them with their own datastores using PostgreSQL. We also use Redis to cache data we’d never store permanently, and to rate-limit our requests to partners’ APIs (like GitHub).

        When we’re dealing with large blobs of immutable data (logs, artifacts, and test results), we store them in Amazon S3. We handle any side-effects of S3’s eventual consistency model within our own code. This ensures that we deal with user requests correctly while writes are in process.

        See more
        Redis logo

        Redis

        59.5K
        3.9K
        Open source (BSD licensed), in-memory data structure store
        59.5K
        3.9K
        PROS OF REDIS
        • 886
          Performance
        • 542
          Super fast
        • 513
          Ease of use
        • 444
          In-memory cache
        • 324
          Advanced key-value cache
        • 194
          Open source
        • 182
          Easy to deploy
        • 164
          Stable
        • 155
          Free
        • 121
          Fast
        • 42
          High-Performance
        • 40
          High Availability
        • 35
          Data Structures
        • 32
          Very Scalable
        • 24
          Replication
        • 22
          Great community
        • 22
          Pub/Sub
        • 19
          "NoSQL" key-value data store
        • 16
          Hashes
        • 13
          Sets
        • 11
          Sorted Sets
        • 10
          NoSQL
        • 10
          Lists
        • 9
          Async replication
        • 9
          BSD licensed
        • 8
          Bitmaps
        • 8
          Integrates super easy with Sidekiq for Rails background
        • 7
          Keys with a limited time-to-live
        • 7
          Open Source
        • 6
          Lua scripting
        • 6
          Strings
        • 5
          Awesomeness for Free
        • 5
          Hyperloglogs
        • 4
          Transactions
        • 4
          Outstanding performance
        • 4
          Runs server side LUA
        • 4
          LRU eviction of keys
        • 4
          Feature Rich
        • 4
          Written in ANSI C
        • 4
          Networked
        • 3
          Data structure server
        • 3
          Performance & ease of use
        • 2
          Dont save data if no subscribers are found
        • 2
          Automatic failover
        • 2
          Easy to use
        • 2
          Temporarily kept on disk
        • 2
          Scalable
        • 2
          Existing Laravel Integration
        • 2
          Channels concept
        • 2
          Object [key/value] size each 500 MB
        • 2
          Simple
        CONS OF REDIS
        • 15
          Cannot query objects directly
        • 3
          No secondary indexes for non-numeric data types
        • 1
          No WAL

        related Redis posts

        Russel Werner
        Lead Engineer at StackShare · | 32 upvotes · 2.8M views

        StackShare Feed is built entirely with React, Glamorous, and Apollo. One of our objectives with the public launch of the Feed was to enable a Server-side rendered (SSR) experience for our organic search traffic. When you visit the StackShare Feed, and you aren't logged in, you are delivered the Trending feed experience. We use an in-house Node.js rendering microservice to generate this HTML. This microservice needs to run and serve requests independent of our Rails web app. Up until recently, we had a mono-repo with our Rails and React code living happily together and all served from the same web process. In order to deploy our SSR app into a Heroku environment, we needed to split out our front-end application into a separate repo in GitHub. The driving factor in this decision was mostly due to limitations imposed by Heroku specifically with how processes can't communicate with each other. A new SSR app was created in Heroku and linked directly to the frontend repo so it stays in-sync with changes.

        Related to this, we need a way to "deploy" our frontend changes to various server environments without building & releasing the entire Ruby application. We built a hybrid Amazon S3 Amazon CloudFront solution to host our Webpack bundles. A new CircleCI script builds the bundles and uploads them to S3. The final step in our rollout is to update some keys in Redis so our Rails app knows which bundles to serve. The result of these efforts were significant. Our frontend team now moves independently of our backend team, our build & release process takes only a few minutes, we are now using an edge CDN to serve JS assets, and we have pre-rendered React pages!

        #StackDecisionsLaunch #SSR #Microservices #FrontEndRepoSplit

        See more
        Simon Reymann
        Senior Fullstack Developer at QUANTUSflow Software GmbH · | 30 upvotes · 11.6M views

        Our whole DevOps stack consists of the following tools:

        • GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
        • Respectively Git as revision control system
        • SourceTree as Git GUI
        • Visual Studio Code as IDE
        • CircleCI for continuous integration (automatize development process)
        • Prettier / TSLint / ESLint as code linter
        • SonarQube as quality gate
        • Docker as container management (incl. Docker Compose for multi-container application management)
        • VirtualBox for operating system simulation tests
        • Kubernetes as cluster management for docker containers
        • Heroku for deploying in test environments
        • nginx as web server (preferably used as facade server in production environment)
        • SSLMate (using OpenSSL) for certificate management
        • Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
        • PostgreSQL as preferred database system
        • Redis as preferred in-memory database/store (great for caching)

        The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:

        • Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
        • Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
        • Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
        • Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
        • Scalability: All-in-one framework for distributed systems.
        • Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
        See more