Evaluating Database Management Software for your product
This article will certainly provide you with a good guide, whether you are an investor, CTO or architect, whether you need to pick a database product in a very core situation, or whether you want to invest in a database product or team.
The current database classification has been very detailed on dbranking:
- Complete ranking
- Relational DBMS
- Key-value stores
- Document stores
- Graph DBMS
- Time Series DBMS
- RDF stores
- Object oriented DBMS
- Search engines
- Multivalue DBMS
- Wide column stores
- Native XML DBMS
- Content stores
- Event Stores
- Navigational DBMS
This article mainly evaluates relational databases, which are divided into:
- OLTP: online transaction processing
- OLAP: Analytical database
- HTAP: Hybrid database (both can support online transactions, but also support online analysis)
The following are the 18 eye-catching eyes for evaluating database products
1. SQL compatibility
SQL syntax (multidimensional analysis, window, subquery, CTE, DDL transaction, trigger, rule, event trigger)
Concurrency control ability
Transaction isolation level support
Supported data types
Supported operators
Supported indexes
Client language interface
Server programming interface
Partition table capability
Management GUI, management interface, management function, management view, etc.
2. Optimizer capabilities
Cost-based execution plan
Execution plan based on genetic algorithm
How many data access methods
Which SQL rewrite rules are supported
Which execution nodes are supported in parallel
Which JOIN algorithms are supported
Which sorting algorithms are supported
3. Expansion ability
Parallel capability (single machine parallel, multi-machine parallel)
Storage capacity (row storage, column storage, compression, heap storage, tree storage)
Scalability-scale up ability
Scalability-scale out ability
Data replication capability
4. Computing ability
Vector calculation
JIT
FPGA, GPU computing expansion capabilities
5. Kernel expansion capability
Kernel extension capability (custom UDF, IDX, OP, TYPE, window, aggregation, external data source, PL extension interface)
6. Reliability, availability, stability
Multi-copy capability
Backup capability
Recovery capabilities (point-in-time recovery, parallel backup and recovery capabilities, etc.)
Disaster tolerance
Cross-border regression capability
HA capability
Crash recovery capability
7. Security (authentication method, encryption type, transparent encryption type, transparent encryption storage)
8. Other features
(Stream computing, graph computing, GIS capabilities, recommended algorithms, time series, NOSQL, search, etc.)
Valuation
9. Kernel development language, model, platform compatibility, product weakness
C,
Thread model, process model,
Linux, unix, windows, …
What are the weaknesses in product design and architecture?
10. Code maturity and completion
11. roadmap
12. Main code contributors
13. Performance
tpc-b, tpc-h, tpc-ds, tpc-c, sysbench(oltp), TCO
14. Application scenarios and cases
15. Ecology
Business ecology: universities, database vendors, technical service vendors, cloud vendors, user groups, application developers, language ecology, investor ecology
Community status
Community activity
The ability to integrate with other ecosystems, hadoop, spark, ….
16. Future development potential
17. Cost
Learning cost
Development costs
Operation and maintenance cost
Management cost
18. Open source license
Open source licensing is very important!!!
Source reference Link
https://db-engines.com/en/ranking
https://www.postgresql.org/docs/12/static/index.html
I like to learn new and better ways of doing things when working on a scale, and feel free to ask questions and make suggestions.
Also, check out another story on this.
Thanks for reading this.