Alternatives to OrientDB logo

Alternatives to OrientDB

Neo4j, MongoDB, ArangoDB, PostgreSQL, and JanusGraph are the most popular alternatives and competitors to OrientDB.
28
9
+ 1
10

What is OrientDB and what are its top alternatives?

It is an open source NoSQL database management system written in Java. It is a Multi-model database, supporting graph, document, key/value, and object models, but the relationships are managed as in graph databases with direct connections between records.
OrientDB is a tool in the Databases category of a tech stack.

OrientDB alternatives & related posts

MongoDB logo

MongoDB

16.7K
13.2K
3.8K
16.7K
13.2K
+ 1
3.8K
The database for giant ideas
MongoDB logo
MongoDB
VS
OrientDB logo
OrientDB

related MongoDB posts

Jeyabalaji Subramanian
Jeyabalaji Subramanian
CTO at FundsCorner · | 24 upvotes · 295.4K views
atFundsCornerFundsCorner
Zappa
Zappa
AWS Lambda
AWS Lambda
SQLAlchemy
SQLAlchemy
Python
Python
Amazon SQS
Amazon SQS
Node.js
Node.js
MongoDB Stitch
MongoDB Stitch
PostgreSQL
PostgreSQL
MongoDB
MongoDB

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
Robert Zuber
CTO at CircleCI · | 22 upvotes · 174.3K views
atCircleCICircleCI
Amazon S3
Amazon S3
GitHub
GitHub
Redis
Redis
PostgreSQL
PostgreSQL
MongoDB
MongoDB

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
PostgreSQL logo

PostgreSQL

17K
12.9K
3.4K
17K
12.9K
+ 1
3.4K
A powerful, open source object-relational database system
PostgreSQL logo
PostgreSQL
VS
OrientDB logo
OrientDB

related PostgreSQL posts

Jeyabalaji Subramanian
Jeyabalaji Subramanian
CTO at FundsCorner · | 24 upvotes · 295.4K views
atFundsCornerFundsCorner
Zappa
Zappa
AWS Lambda
AWS Lambda
SQLAlchemy
SQLAlchemy
Python
Python
Amazon SQS
Amazon SQS
Node.js
Node.js
MongoDB Stitch
MongoDB Stitch
PostgreSQL
PostgreSQL
MongoDB
MongoDB

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
Robert Zuber
CTO at CircleCI · | 22 upvotes · 174.3K views
atCircleCICircleCI
Amazon S3
Amazon S3
GitHub
GitHub
Redis
Redis
PostgreSQL
PostgreSQL
MongoDB
MongoDB

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
JanusGraph logo

JanusGraph

5
2
0
5
2
+ 1
0
Open-source, distributed graph database
    Be the first to leave a pro
    JanusGraph logo
    JanusGraph
    VS
    OrientDB logo
    OrientDB
    MySQL logo

    MySQL

    23.4K
    18K
    3.7K
    23.4K
    18K
    + 1
    3.7K
    The world's most popular open source database
    MySQL logo
    MySQL
    VS
    OrientDB logo
    OrientDB

    related MySQL posts

    Tim Abbott
    Tim Abbott
    Founder at Zulip · | 20 upvotes · 94.2K views
    atZulipZulip
    Elasticsearch
    Elasticsearch
    MySQL
    MySQL
    PostgreSQL
    PostgreSQL

    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
    Julien DeFrance
    Julien DeFrance
    Principal Software Engineer at Tophatter · | 16 upvotes · 406.7K views
    atSmartZipSmartZip
    Amazon DynamoDB
    Amazon DynamoDB
    Ruby
    Ruby
    Node.js
    Node.js
    AWS Lambda
    AWS Lambda
    New Relic
    New Relic
    Amazon Elasticsearch Service
    Amazon Elasticsearch Service
    Elasticsearch
    Elasticsearch
    Superset
    Superset
    Amazon Quicksight
    Amazon Quicksight
    Amazon Redshift
    Amazon Redshift
    Zapier
    Zapier
    Segment
    Segment
    Amazon CloudFront
    Amazon CloudFront
    Memcached
    Memcached
    Amazon ElastiCache
    Amazon ElastiCache
    Amazon RDS for Aurora
    Amazon RDS for Aurora
    MySQL
    MySQL
    Amazon RDS
    Amazon RDS
    Amazon S3
    Amazon S3
    Docker
    Docker
    Capistrano
    Capistrano
    AWS Elastic Beanstalk
    AWS Elastic Beanstalk
    Rails API
    Rails API
    Rails
    Rails
    Algolia
    Algolia

    Back in 2014, I was given an opportunity to re-architect SmartZip Analytics platform, and flagship product: SmartTargeting. This is a SaaS software helping real estate professionals keeping up with their prospects and leads in a given neighborhood/territory, finding out (thanks to predictive analytics) who's the most likely to list/sell their home, and running cross-channel marketing automation against them: direct mail, online ads, email... The company also does provide Data APIs to Enterprise customers.

    I had inherited years and years of technical debt and I knew things had to change radically. The first enabler to this was to make use of the cloud and go with AWS, so we would stop re-inventing the wheel, and build around managed/scalable services.

    For the SaaS product, we kept on working with Rails as this was what my team had the most knowledge in. We've however broken up the monolith and decoupled the front-end application from the backend thanks to the use of Rails API so we'd get independently scalable micro-services from now on.

    Our various applications could now be deployed using AWS Elastic Beanstalk so we wouldn't waste any more efforts writing time-consuming Capistrano deployment scripts for instance. Combined with Docker so our application would run within its own container, independently from the underlying host configuration.

    Storage-wise, we went with Amazon S3 and ditched any pre-existing local or network storage people used to deal with in our legacy systems. On the database side: Amazon RDS / MySQL initially. Ultimately migrated to Amazon RDS for Aurora / MySQL when it got released. Once again, here you need a managed service your cloud provider handles for you.

    Future improvements / technology decisions included:

    Caching: Amazon ElastiCache / Memcached CDN: Amazon CloudFront Systems Integration: Segment / Zapier Data-warehousing: Amazon Redshift BI: Amazon Quicksight / Superset Search: Elasticsearch / Amazon Elasticsearch Service / Algolia Monitoring: New Relic

    As our usage grows, patterns changed, and/or our business needs evolved, my role as Engineering Manager then Director of Engineering was also to ensure my team kept on learning and innovating, while delivering on business value.

    One of these innovations was to get ourselves into Serverless : Adopting AWS Lambda was a big step forward. At the time, only available for Node.js (Not Ruby ) but a great way to handle cost efficiency, unpredictable traffic, sudden bursts of traffic... Ultimately you want the whole chain of services involved in a call to be serverless, and that's when we've started leveraging Amazon DynamoDB on these projects so they'd be fully scalable.

    See more

    related Microsoft SQL Server posts

    Amazon ElastiCache
    Amazon ElastiCache
    Amazon Elasticsearch Service
    Amazon Elasticsearch Service
    AWS Elastic Load Balancing (ELB)
    AWS Elastic Load Balancing (ELB)
    Memcached
    Memcached
    Redis
    Redis
    Python
    Python
    AWS Lambda
    AWS Lambda
    Amazon RDS
    Amazon RDS
    Microsoft SQL Server
    Microsoft SQL Server
    MariaDB
    MariaDB
    Amazon RDS for PostgreSQL
    Amazon RDS for PostgreSQL
    Rails
    Rails
    Ruby
    Ruby
    Heroku
    Heroku
    AWS Elastic Beanstalk
    AWS Elastic Beanstalk

    We initially started out with Heroku as our PaaS provider due to a desire to use it by our original developer for our Ruby on Rails application/website at the time. We were finding response times slow, it was painfully slow, sometimes taking 10 seconds to start loading the main page. Moving up to the next "compute" level was going to be very expensive.

    We moved our site over to AWS Elastic Beanstalk , not only did response times on the site practically become instant, our cloud bill for the application was cut in half.

    In database world we are currently using Amazon RDS for PostgreSQL also, we have both MariaDB and Microsoft SQL Server both hosted on Amazon RDS. The plan is to migrate to AWS Aurora Serverless for all 3 of those database systems.

    Additional services we use for our public applications: AWS Lambda, Python, Redis, Memcached, AWS Elastic Load Balancing (ELB), Amazon Elasticsearch Service, Amazon ElastiCache

    See more

    related MariaDB posts

    Amazon ElastiCache
    Amazon ElastiCache
    Amazon Elasticsearch Service
    Amazon Elasticsearch Service
    AWS Elastic Load Balancing (ELB)
    AWS Elastic Load Balancing (ELB)
    Memcached
    Memcached
    Redis
    Redis
    Python
    Python
    AWS Lambda
    AWS Lambda
    Amazon RDS
    Amazon RDS
    Microsoft SQL Server
    Microsoft SQL Server
    MariaDB
    MariaDB
    Amazon RDS for PostgreSQL
    Amazon RDS for PostgreSQL
    Rails
    Rails
    Ruby
    Ruby
    Heroku
    Heroku
    AWS Elastic Beanstalk
    AWS Elastic Beanstalk

    We initially started out with Heroku as our PaaS provider due to a desire to use it by our original developer for our Ruby on Rails application/website at the time. We were finding response times slow, it was painfully slow, sometimes taking 10 seconds to start loading the main page. Moving up to the next "compute" level was going to be very expensive.

    We moved our site over to AWS Elastic Beanstalk , not only did response times on the site practically become instant, our cloud bill for the application was cut in half.

    In database world we are currently using Amazon RDS for PostgreSQL also, we have both MariaDB and Microsoft SQL Server both hosted on Amazon RDS. The plan is to migrate to AWS Aurora Serverless for all 3 of those database systems.

    Additional services we use for our public applications: AWS Lambda, Python, Redis, Memcached, AWS Elastic Load Balancing (ELB), Amazon Elasticsearch Service, Amazon ElastiCache

    See more
    Joshua Dean Küpper
    Joshua Dean Küpper
    CEO at Scrayos UG (haftungsbeschränkt) · | 5 upvotes · 39.7K views
    atScrayos UG (haftungsbeschränkt)Scrayos UG (haftungsbeschränkt)
    Sentry
    Sentry
    GitLab
    GitLab
    PostgreSQL
    PostgreSQL
    MariaDB
    MariaDB

    We primarily use MariaDB but use PostgreSQL as a part of GitLab , Sentry and @Nextcloud , which (initially) forced us to use it anyways. While this isn't much of a decision – because we didn't have one (ha ha) – we learned to love the perks and advantages of PostgreSQL anyways. PostgreSQLs extension system makes it even more flexible than a lot of the other SQL-based DBs (that only offer stored procedures) and the additional JOIN options, the enhanced role management and the different authentication options came in really handy, when doing manual maintenance on the databases.

    See more
    SQLite logo

    SQLite

    3.4K
    2.6K
    504
    3.4K
    2.6K
    + 1
    504
    A software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine
    SQLite logo
    SQLite
    VS
    OrientDB logo
    OrientDB

    related SQLite posts

    Daniel Quinn
    Daniel Quinn
    Senior Developer at Workfinder · | 2 upvotes · 24.3K views
    atThe Paperless ProjectThe Paperless Project
    PostgreSQL
    PostgreSQL
    SQLite
    SQLite

    SQLite is a tricky beast. It's great if you're working single-threaded, but a Terrible Idea if you've got more than one concurrent connection. You use it because it's easy to setup, light, and portable (it's just a file).

    In Paperless, we've built a self-hosted web application, so it makes sense to standardise on something small & light, and as we don't have to worry about multiple connections (it's just you using the app), it's a perfect fit.

    For users wanting to scale Paperless up to a multi-user environment though, we do provide the hooks to switch to PostgreSQL .

    See more
    PostgreSQL
    PostgreSQL
    SQLite
    SQLite

    SQLite for development, PostgreSQL SQL for production databases.

    See more
    Memcached logo

    Memcached

    2.7K
    1.6K
    452
    2.7K
    1.6K
    + 1
    452
    High-performance, distributed memory object caching system
    Memcached logo
    Memcached
    VS
    OrientDB logo
    OrientDB

    related Memcached posts

    Julien DeFrance
    Julien DeFrance
    Principal Software Engineer at Tophatter · | 16 upvotes · 406.7K views
    atSmartZipSmartZip
    Amazon DynamoDB
    Amazon DynamoDB
    Ruby
    Ruby
    Node.js
    Node.js
    AWS Lambda
    AWS Lambda
    New Relic
    New Relic
    Amazon Elasticsearch Service
    Amazon Elasticsearch Service
    Elasticsearch
    Elasticsearch
    Superset
    Superset
    Amazon Quicksight
    Amazon Quicksight
    Amazon Redshift
    Amazon Redshift
    Zapier
    Zapier
    Segment
    Segment
    Amazon CloudFront
    Amazon CloudFront
    Memcached
    Memcached
    Amazon ElastiCache
    Amazon ElastiCache
    Amazon RDS for Aurora
    Amazon RDS for Aurora
    MySQL
    MySQL
    Amazon RDS
    Amazon RDS
    Amazon S3
    Amazon S3
    Docker
    Docker
    Capistrano
    Capistrano
    AWS Elastic Beanstalk
    AWS Elastic Beanstalk
    Rails API
    Rails API
    Rails
    Rails
    Algolia
    Algolia

    Back in 2014, I was given an opportunity to re-architect SmartZip Analytics platform, and flagship product: SmartTargeting. This is a SaaS software helping real estate professionals keeping up with their prospects and leads in a given neighborhood/territory, finding out (thanks to predictive analytics) who's the most likely to list/sell their home, and running cross-channel marketing automation against them: direct mail, online ads, email... The company also does provide Data APIs to Enterprise customers.

    I had inherited years and years of technical debt and I knew things had to change radically. The first enabler to this was to make use of the cloud and go with AWS, so we would stop re-inventing the wheel, and build around managed/scalable services.

    For the SaaS product, we kept on working with Rails as this was what my team had the most knowledge in. We've however broken up the monolith and decoupled the front-end application from the backend thanks to the use of Rails API so we'd get independently scalable micro-services from now on.

    Our various applications could now be deployed using AWS Elastic Beanstalk so we wouldn't waste any more efforts writing time-consuming Capistrano deployment scripts for instance. Combined with Docker so our application would run within its own container, independently from the underlying host configuration.

    Storage-wise, we went with Amazon S3 and ditched any pre-existing local or network storage people used to deal with in our legacy systems. On the database side: Amazon RDS / MySQL initially. Ultimately migrated to Amazon RDS for Aurora / MySQL when it got released. Once again, here you need a managed service your cloud provider handles for you.

    Future improvements / technology decisions included:

    Caching: Amazon ElastiCache / Memcached CDN: Amazon CloudFront Systems Integration: Segment / Zapier Data-warehousing: Amazon Redshift BI: Amazon Quicksight / Superset Search: Elasticsearch / Amazon Elasticsearch Service / Algolia Monitoring: New Relic

    As our usage grows, patterns changed, and/or our business needs evolved, my role as Engineering Manager then Director of Engineering was also to ensure my team kept on learning and innovating, while delivering on business value.

    One of these innovations was to get ourselves into Serverless : Adopting AWS Lambda was a big step forward. At the time, only available for Node.js (Not Ruby ) but a great way to handle cost efficiency, unpredictable traffic, sudden bursts of traffic... Ultimately you want the whole chain of services involved in a call to be serverless, and that's when we've started leveraging Amazon DynamoDB on these projects so they'd be fully scalable.

    See more
    Kir Shatrov
    Kir Shatrov
    Production Engineer at Shopify · | 13 upvotes · 112.9K views
    atShopifyShopify
    Memcached
    Memcached
    Redis
    Redis
    MySQL
    MySQL
    Google Kubernetes Engine
    Google Kubernetes Engine
    Kubernetes
    Kubernetes
    Docker
    Docker

    At Shopify, over the years, we moved from shards to the concept of "pods". A pod is a fully isolated instance of Shopify with its own datastores like MySQL, Redis, Memcached. A pod can be spawned in any region. This approach has helped us eliminate global outages. As of today, we have more than a hundred pods, and since moving to this architecture we haven't had any major outages that affected all of Shopify. An outage today only affects a single pod or region.

    As we grew into hundreds of shards and pods, it became clear that we needed a solution to orchestrate those deployments. Today, we use Docker, Kubernetes, and Google Kubernetes Engine to make it easy to bootstrap resources for new Shopify Pods.

    See more
    Cassandra logo

    Cassandra

    2K
    1.6K
    443
    2K
    1.6K
    + 1
    443
    A partitioned row store. Rows are organized into tables with a required primary key.
    Cassandra logo
    Cassandra
    VS
    OrientDB logo
    OrientDB

    related Cassandra posts

    Thierry Schellenbach
    Thierry Schellenbach
    CEO at Stream · | 17 upvotes · 60.3K views
    atStreamStream
    RocksDB
    RocksDB
    Cassandra
    Cassandra
    Redis
    Redis
    #InMemoryDatabases
    #DataStores
    #Databases

    1.0 of Stream leveraged Cassandra for storing the feed. Cassandra is a common choice for building feeds. Instagram, for instance started, out with Redis but eventually switched to Cassandra to handle their rapid usage growth. Cassandra can handle write heavy workloads very efficiently.

    Cassandra is a great tool that allows you to scale write capacity simply by adding more nodes, though it is also very complex. This complexity made it hard to diagnose performance fluctuations. Even though we had years of experience with running Cassandra, it still felt like a bit of a black box. When building Stream 2.0 we decided to go for a different approach and build Keevo. Keevo is our in-house key-value store built upon RocksDB, gRPC and Raft.

    RocksDB is a highly performant embeddable database library developed and maintained by Facebook’s data engineering team. RocksDB started as a fork of Google’s LevelDB that introduced several performance improvements for SSD. Nowadays RocksDB is a project on its own and is under active development. It is written in C++ and it’s fast. Have a look at how this benchmark handles 7 million QPS. In terms of technology it’s much more simple than Cassandra.

    This translates into reduced maintenance overhead, improved performance and, most importantly, more consistent performance. It’s interesting to note that LinkedIn also uses RocksDB for their feed.

    #InMemoryDatabases #DataStores #Databases

    See more
    Linux
    Linux
    Docker
    Docker
    jQuery
    jQuery
    AngularJS
    AngularJS
    React
    React
    Cassandra
    Cassandra
    MongoDB
    MongoDB
    MySQL
    MySQL
    Zend Framework
    Zend Framework
    Laravel
    Laravel

    React AngularJS jQuery

    Laravel Zend Framework

    MySQL MongoDB Cassandra

    Docker

    Linux

    See more
    Hadoop logo

    Hadoop

    1.1K
    884
    48
    1.1K
    884
    + 1
    48
    Open-source software for reliable, scalable, distributed computing
    Hadoop logo
    Hadoop
    VS
    OrientDB logo
    OrientDB

    related Hadoop posts

    StackShare Editors
    StackShare Editors
    | 4 upvotes · 91K views
    atUber TechnologiesUber Technologies
    Hadoop
    Hadoop
    Logstash
    Logstash
    Elasticsearch
    Elasticsearch
    Kibana
    Kibana
    Kafka
    Kafka

    With interactions across each other and mobile devices, logging is important as it is information for internal cases like debugging and business cases like dynamic pricing.

    With multiple Kafka clusters, data is archived into Hadoop before expiration. Data is ingested in realtime and indexed into an ELK stack. The ELK stack comprises of Elasticsearch, Logstash, and Kibana for searching and visualization.

    See more
    StackShare Editors
    StackShare Editors
    Apache Thrift
    Apache Thrift
    Kotlin
    Kotlin
    Presto
    Presto
    HHVM (HipHop Virtual Machine)
    HHVM (HipHop Virtual Machine)
    gRPC
    gRPC
    Kubernetes
    Kubernetes
    Apache Spark
    Apache Spark
    Airflow
    Airflow
    Terraform
    Terraform
    Hadoop
    Hadoop
    Swift
    Swift
    Hack
    Hack
    Memcached
    Memcached
    Consul
    Consul
    Chef
    Chef
    Prometheus
    Prometheus

    Since the beginning, Cal Henderson has been the CTO of Slack. Earlier this year, he commented on a Quora question summarizing their current stack.

    Apps
    • Web: a mix of JavaScript/ES6 and React.
    • Desktop: And Electron to ship it as a desktop application.
    • Android: a mix of Java and Kotlin.
    • iOS: written in a mix of Objective C and Swift.
    Backend
    • The core application and the API written in PHP/Hack that runs on HHVM.
    • The data is stored in MySQL using Vitess.
    • Caching is done using Memcached and MCRouter.
    • The search service takes help from SolrCloud, with various Java services.
    • The messaging system uses WebSockets with many services in Java and Go.
    • Load balancing is done using HAproxy with Consul for configuration.
    • Most services talk to each other over gRPC,
    • Some Thrift and JSON-over-HTTP
    • Voice and video calling service was built in Elixir.
    Data warehouse
    • Built using open source tools including Presto, Spark, Airflow, Hadoop and Kafka.
    Etc
    See more
    Oracle logo

    Oracle

    832
    602
    79
    832
    602
    + 1
    79
    An RDBMS that implements object-oriented features such as user-defined types, inheritance, and polymorphism
    Oracle logo
    Oracle
    VS
    OrientDB logo
    OrientDB
    CouchDB logo

    CouchDB

    287
    245
    136
    287
    245
    + 1
    136
    HTTP + JSON document database with Map Reduce views and peer-based replication
    CouchDB logo
    CouchDB
    VS
    OrientDB logo
    OrientDB

    related CouchDB posts

    Jonathan Pugh
    Jonathan Pugh
    Software Engineer / Project Manager / Technical Architect · | 19 upvotes · 196.4K views
    Pouchdb
    Pouchdb
    CouchDB
    CouchDB
    Font Awesome
    Font Awesome
    CSS 3
    CSS 3
    Apache Cordova
    Apache Cordova
    PhoneGap
    PhoneGap
    HTML5
    HTML5
    Ruby
    Ruby
    Babel
    Babel
    Webpack
    Webpack
    Visual Studio Code
    Visual Studio Code
    Figma
    Figma
    TypeScript
    TypeScript
    JavaScript
    JavaScript
    Framework7
    Framework7
    #Css
    #CSS3
    #SCSS
    #Sass
    #Less
    #Electron
    #HandleBars
    #Template7
    #Sketch
    #GraphQL
    #HTML5
    #GraphCool

    I needed to choose a full stack of tools for cross platform mobile application design & development. After much research and trying different tools, these are what I came up with that work for me today:

    For the client coding I chose Framework7 because of its performance, easy learning curve, and very well designed, beautiful UI widgets. I think it's perfect for solo development or small teams. I didn't like React Native. It felt heavy to me and rigid. Framework7 allows the use of #CSS3, which I think is the best technology to come out of the #WWW movement. No other tech has been able to allow designers and developers to develop such flexible, high performance, customisable user interface elements that are highly responsive and hardware accelerated before. Now #CSS3 includes variables and flexboxes it is truly a powerful language and there is no longer a need for preprocessors such as #SCSS / #Sass / #less. React Native contains a very limited interpretation of #CSS3 which I found very frustrating after using #CSS3 for some years already and knowing its powerful features. The other very nice feature of Framework7 is that you can even build for the browser if you want your app to be available for desktop web browsers. The latest release also includes the ability to build for #Electron so you can have MacOS, Windows and Linux desktop apps. This is not possible with React Native yet.

    Framework7 runs on top of Apache Cordova. Cordova and webviews have been slated as being slow in the past. Having a game developer background I found the tweeks to make it run as smooth as silk. One of those tweeks is to use WKWebView. Another important one was using srcset on images.

    I use #Template7 for the for the templating system which is a no-nonsense mobile-centric #HandleBars style extensible templating system. It's easy to write custom helpers for, is fast and has a small footprint. I'm not forced into a new paradigm or learning some new syntax. It operates with standard JavaScript, HTML5 and CSS 3. It's written by the developer of Framework7 and so dovetails with it as expected.

    I configured TypeScript to work with the latest version of Framework7. I consider TypeScript to be one of the best creations to come out of Microsoft in some time. They must have an amazing team working on it. It's very powerful and flexible. It helps you catch a lot of bugs and also provides code completion in supporting IDEs. So for my IDE I use Visual Studio Code which is a blazingly fast and silky smooth editor that integrates seamlessly with TypeScript for the ultimate type checking setup (both products are produced by Microsoft).

    I use Webpack and Babel to compile the JavaScript. TypeScript can compile to JavaScript directly but Babel offers a few more options and polyfills so you can use the latest (and even prerelease) JavaScript features today and compile to be backwards compatible with virtually any browser. My favorite recent addition is "optional chaining" which greatly simplifies and increases readability of a number of sections of my code dealing with getting and setting data in nested objects.

    I use some Ruby scripts to process images with ImageMagick and pngquant to optimise for size and even auto insert responsive image code into the HTML5. Ruby is the ultimate cross platform scripting language. Even as your scripts become large, Ruby allows you to refactor your code easily and make it Object Oriented if necessary. I find it the quickest and easiest way to maintain certain aspects of my build process.

    For the user interface design and prototyping I use Figma. Figma has an almost identical user interface to #Sketch but has the added advantage of being cross platform (MacOS and Windows). Its real-time collaboration features are outstanding and I use them a often as I work mostly on remote projects. Clients can collaborate in real-time and see changes I make as I make them. The clickable prototyping features in Figma are also very well designed and mean I can send clickable prototypes to clients to try user interface updates as they are made and get immediate feedback. I'm currently also evaluating the latest version of #AdobeXD as an alternative to Figma as it has the very cool auto-animate feature. It doesn't have real-time collaboration yet, but I heard it is proposed for 2019.

    For the UI icons I use Font Awesome Pro. They have the largest selection and best looking icons you can find on the internet with several variations in styles so you can find most of the icons you want for standard projects.

    For the backend I was using the #GraphCool Framework. As I later found out, #GraphQL still has some way to go in order to provide the full power of a mature graph query language so later in my project I ripped out #GraphCool and replaced it with CouchDB and Pouchdb. Primarily so I could provide good offline app support. CouchDB with Pouchdb is very flexible and efficient combination and overcomes some of the restrictions I found in #GraphQL and hence #GraphCool also. The most impressive and important feature of CouchDB is its replication. You can configure it in various ways for backups, fault tolerance, caching or conditional merging of databases. CouchDB and Pouchdb even supports storing, retrieving and serving binary or image data or other mime types. This removes a level of complexity usually present in database implementations where binary or image data is usually referenced through an #HTML5 link. With CouchDB and Pouchdb apps can operate offline and sync later, very efficiently, when the network connection is good.

    I use PhoneGap when testing the app. It auto-reloads your app when its code is changed and you can also install it on Android phones to preview your app instantly. iOS is a bit more tricky cause of Apple's policies so it's not available on the App Store, but you can build it and install it yourself to your device.

    So that's my latest mobile stack. What tools do you use? Have you tried these ones?

    See more
    Josh Dzielak
    Josh Dzielak
    Developer Advocate at DeveloperMode · | 5 upvotes · 27.4K views
    Cloudant
    Cloudant
    CouchDB
    CouchDB
    Pouchdb
    Pouchdb
    Firebase
    Firebase

    As a side project, I was building a note taking app that needed to synchronize between the client and the server so that it would work offline. At first I used Firebase to store the data on the server and wrote my own code to cache Firebase data in local storage and synchronize it. This was brittle and not performant. I figured that someone else must have solved this in a better way so I went looking for a better solution.

    I needed a tool where I could write the data once and it would write to client and server, and when clients came back on line they would automatically catch the client up. I also needed conflict resolution. I was thrilled to discover Pouchdb and its server-side counterpart CouchDB. Together, they met nearly all of my requirements and were very easy to implement - I was able to remove a ton of custom code and have found the synchronization to be very robust. Pouchdb 7 has improved mobile support too, so I can run the app on iOS or Android browsers.

    My Couchdb instance is actually a Cloudant instance running on IBM Bluemix. For my fairly low level of API usage, it's been totally free, and it has a decent GUI for managing users and replications.

    See more

    related RethinkDB posts

    Łukasz Korecki
    Łukasz Korecki
    CTO & Co-founder at EnjoyHQ · | 12 upvotes · 40.3K views
    atEnjoyHQEnjoyHQ
    PostgreSQL
    PostgreSQL
    MongoDB
    MongoDB
    RethinkDB
    RethinkDB

    We initially chose RethinkDB because of the schema-less document store features, and better durability resilience/story than MongoDB In the end, it didn't work out quite as we expected: there's plenty of scalability issues, it's near impossible to run analytical workloads and small community makes working with Rethink a challenge. We're in process of migrating all our workloads to PostgreSQL and hopefully, we will be able to decommission our RethinkDB deployment soon.

    See more
    HBase logo

    HBase

    193
    156
    12
    193
    156
    + 1
    12
    The Hadoop database, a distributed, scalable, big data store
    HBase logo
    HBase
    VS
    OrientDB logo
    OrientDB
    Oracle PL/SQL logo

    Oracle PL/SQL

    88
    49
    0
    88
    49
    + 1
    0
    It is a combination of SQL along with the procedural features of programming languages
      Be the first to leave a pro
      Oracle PL/SQL logo
      Oracle PL/SQL
      VS
      OrientDB logo
      OrientDB
      MSSQL logo

      MSSQL

      85
      50
      0
      85
      50
      + 1
      0
      It is an enterprise-level database system that is very popular for Windows web servers
        Be the first to leave a pro
        MSSQL logo
        MSSQL
        VS
        OrientDB logo
        OrientDB

        related MSSQL posts

        Jelena Dedovic
        Jelena Dedovic
        Software Engineer · | 5 upvotes · 15.7K views
        MSSQL
        MSSQL
        PostgreSQL
        PostgreSQL
        AIOHTTP
        AIOHTTP
        asyncio
        asyncio
        Tornado
        Tornado

        Investigating Tortoise ORM and GINO ORM...

        I need to introduce some async ORM with the current stack: Tornado with asyncio loop, AIOHTTP, with PostgreSQL and MSSQL. This project revolves heavily around realtime and due to the realtime requirements, blocking during database access is not acceptable.

        Considering that these ORMs are both young projects, I wondered if anybody had some experience with similar stack and these async ORMs?

        See more