Привет, Хабр! Наверное, у каждого из нас есть такой файлик, куда мы припрятываем что-то полезное и интересное для себя. Какие-то ссылки на статьи, книги, репозитории, мануалы. Это могут быть закладки в браузере или даже просто открытые вкладки, оставленные на потом. Со временем все это разбухает, ссылки перестают открываться, а большая часть материалов просто устаревает.
А что если поделиться этой годнотой с сообществом и выложить этот файлик на гитхаб? Тогда ваши труды могут быть полезны еще кому-нибудь, а поддерживать актуальность можно совместно, принимая обновления от желающих через старые добрые PR'ы. Именно для этого предназначен проект Awesome lists. Он входит в ТОП-10 репозиториев гитхаба, обладает 138К звезд, и ссылка на ваши труды может оказаться прямо в его корневом README, что привлечет огромную аудиторию к вашему творчеству. Правда, для этого придется немного постараться. О моем опыте таких стараний хочу поделиться с вами.
Меня зовут Максим Грамин. В КРОК занимаюсь Java-разработкой и исследованиями в области БД. В этом посте я расскажу, что такое Awesome Lists и как сделать свой настоящий официальный awesome-репо.
Что такое Awesome Lists
Когда мне предстоит разобраться с какой-нибудь новой технологией или языком программирования, то я первым делом иду именно сюда — нахожу нужный раздел, а в нем подходящие листы. И судя по количеству звезд и их постоянному росту, так делаю не только я.
На самом деле — это обычный плоский readme.md, который живет в отдельном репозитории, занимает при этом 8-е место среди всех репозиториев GitHub'а и включает ссылки на другие листы, посвященные какой-либо тематике. Например в разделе Programming Languages можно найти листы Awesome Python и Awesome Go, а в Front-End Development есть огромное количество ресурсов по WEB-разработке. Ну и, конечно же, — раздел Databases (к нему мы еще вернемся чуть позже). И да, все это не ограничивается только техническими темами. Например, в разделах Entertainment и Gaming тоже можно найти много чего интересного (меня лично порадовал awesome-fantasy).
Главная особенность состоит в том, что все эти листы ведутся не лично автором, а сообществом и составлены в соответствии со специальным и очень строгим awesome manifesto. Каждый такой лист является самостоятельным сообществом специалистов, живет своей жизнью и открыт для ваших pull request'ов, которые сделают его еще лучше. А также любой желающий может сделать свой собственный лист, если какая-то тема еще не была освещена.
Автор идеи и координатор всего этого хозяйства — легендарный Синдре Сорхус, первый человек на GitHub'е, автор более 1000 npm-модулей, и именно он будет принимать ваши PR-ы.
Как попасть в awesome-list
Если вдруг вы не нашли подходящего листа на интересующую вас тему, то это первый признак того, что его нужно сделать самому!
Расскажу на примере своего детища Awesome Database Tools — Из проекта в проект мне приходится работать с самыми разными базами данных, и поэтому у меня завелся такой файлик, в котором я собирал полезные тулзы для работы с ними, всякие БД-миграторы, IDE-шки, админ-панели, средства мониторинга и всякое разное. Инструменты, которые я уже использовал, или только планировал начать применять. Делился я этим файликом с коллегами в КРОК и за его пределами. Это много кому помогало и было интересно. В итоге я захотел славы большего, когда однажды заметил, что в разделе Databases как раз нет листа на эту тему. И я решил добавить туда свой.
Что для этого нужно?
- Регистрируем обычный GitHub-репо с именем вида awesome-что-то-там. В моем случае это был awesome-database-tools
- Приводим свой лист к формату awesome, в этом нам поможет generator-awesome-list, который сгенерирует все нужные файлы в нужном формате
- Настраиваем самый настоящий CI. awesome-lint и travis ci помогут нам контролировать валидность нашего листа
- Ждем 30 дней
- Делаем ревью как минимум на 2 чужих PR'а
- И наконец делаем PR в главный репо, куда добавляем ссылку на свой репо. Тут нужно внимательно все прочесть и тщательно выполнить все многочисленные требования к новому листу и самому PR.
Мой первый блин оказался комом
Но прошло немного времени, я собрал еще больше материала, поработал над ошибками и отважился на вторую попытку.
Но я забыл об очень важной вещи, о чем мне мягко намекнули:
Я был не очень внимателен и не добавил единорога в знак подтверждения того, что все условия выполнены
Затем прошло еще немного времени, еще немного правок по замечаниям, и появился долгожданный твит, что мой PR был принят.
Так я стал автором своего первого листа, и мне стали приходить PR'ы из сообщества на добавление новых тулзов. И многие из них уже включены в Awesome Database Tools. Если лень переходить по ссылке,
Awesome Database Tools
Community driven list of database tools
Here we will collect information about awesome useful and awesome experimental tools that simplify working with databases for DBA, DevOps, Developers and mere mortals.
Feel free to add information about your own db-tools or your favorite third-party db-tools.
Contents
- IDE
- GUI Managers/Clients
- CLI tools
- DB-schema navigation and visualization
- Modelers
- Migration tools
- Code generation tools
- Wrappers
- Backup tools
- Replication/Data operation
- Scripts
- Monitoring/Statistics/Perfomance
- Testing
- Administration
- HA/Failover/Sharding
- Kubernetes
- Configuration Tuning
- DevOps
- Schema samples
- Reporting
- Distributions
- Security
- Code formatters
IDE
- AnySQL Maestro — Premier multi-purpose admin tool for database management, control and development.
- Aqua Data Studio — Aqua Data Studio is productivity software for Database Developers, DBAs, and Analysts.
- Database .net — Multiple database management tool with support for 20+ databases.
- DataGrip — Cross-Platform IDE for Databases & SQL by JetBrains.
- DBeaver — Free universal database manager and SQL client.
- dbForge Studio for MySQL — Universal IDE for MySQL and MariaDB database development, management, and administration.
- dbForge Studio for Oracle — Powerful IDE for Oracle management, administration, and development.
- dbForge Studio for PostgreSQL — GUI tool for managing and developing databases and objects.
- dbForge Studio for SQL Server — Powerful integrated development environment for SQL Server development, management, administration, data analysis, and reporting.
- dbKoda — Modern (JavaScript/Electron framework), open source IDE for MongoDB. It has features to support development, administration and performance tuning on MongoDB databases.
- IBExpert — Comprehensive GUI tool for Firebird and InterBase.
- HeidiSQL — A lightweight client for managing MySQL, MSSQL and PostgreSQL, written in Delphi.
- MySQL Workbench — MySQL Workbench is a unified visual tool for database architects, developers, and DBAs.
- Navicat — A database development tool that allows you to simultaneously connect to MySQL, MariaDB, SQL Server, Oracle, PostgreSQL, and SQLite databases from a single application.
- Oracle SQL Developer — Oracle SQL Developer is a free, integrated development environment that simplifies the development and management of Oracle Database in both traditional and Cloud deployments.
- pgAdmin — The most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
- pgAdmin3 — Long Term Support for pgAdmin3.
- PL/SQL Developer — IDE that is specifically targeted at the development of stored program units for Oracle Databases.
- PostgreSQL Maestro — Complete and powerful database management, admin and development tool for PostgreSQL.
- Toad — Toad is the premier database solution for developers, admins and data analysts. Manage complex database changes with a single database management tool.
- Toad Edge — Simplified database development tool for MySQL and Postgres.
- TOra — TOra is an open source SQL IDE for Oracle, MySQL and PostgreSQL dbs.
- Valentina Studio — Create, administer, query and explore Valentina DB, MySQL, MariaDB, PostgreSQL and SQLite databases for FREE.
GUI Managers/Clients
- Adminer — Database management in a single PHP file.
- DbVisualizer — Universal database tool for developers, DBAs and analysts.
- HouseOps — Enterprise ClickHouse Ops UI for you run querys, monitoring ClickHouse health and make a lot of others thinks.
- JackDB — Direct SQL access to all your data, no matter where it lives.
- OmniDB — Web tool for database management.
- Pgweb — Web-based database browser for PostgreSQL, written in Go and works on macOS, Linux and Windows machines.
- phpLiteAdmin — Web-based SQLite database admin tool written in PHP with support for SQLite3 and SQLite2.
- phpMyAdmin — A web interface for MySQL and MariaDB.
- psequel — PSequel provides a clean and simple interface for you to perform common PostgreSQL tasks quickly.
- PopSQL — Modern, collaborative SQL editor for your team.
- Postico — A Modern PostgreSQL Client for the Mac.
- Robo 3T — Robo 3T (formerly Robomongo) is a shell-centric cross-platform MongoDB management tool.
- Sequel Pro — Sequel Pro is a fast, easy-to-use Mac database management application for working with MySQL & MariaDB databases.
- SQL Operations Studio — A data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.
- SQLite Expert — Graphical interface supports all SQLite features.
- sqlpad — Web-based SQL editor run in your own private cloud.
- SQLPro — A simple, powerful Postgres manager for macOS.
- SQuirreL — Graphical SQL client written in Java that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc.
- SQLTools — Database management for VSCode.
- SQLyog — The most complete and easy to use MySQL GUI.
- Tabix — SQL Editor & Open source simple business intelligence for Clickhouse.
- TablePlus — Modern, native, and friendly GUI tool for relational databases: MySQL, PostgreSQL, SQLite & more.
- TeamPostgreSQL — PostgreSQL Web Administration GUI — use your PostgreSQL databases from anywhere, with rich, lightning-fast AJAX web interface.
CLI tools
- ipython-sql — Connect to a database for issue SQL commands within IPython or IPython Notebook.
- iredis — A Cli for Redis with AutoCompletion and Syntax Highlighting.
- pgcenter — Top-like admin tool for PostgreSQL.
- pg_activity — Top like application for PostgreSQL server activity monitoring.
- pg_top — 'top' for PostgreSQL.
- pspg — Postgres Pager.
- SQLcl — Oracle SQL Developer Command Line (SQLcl) is a free command line interface for Oracle Database.
- usql — A universal command-line interface for PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Server, and many other databases including NoSQL and non-relational databases!
dbcli
- athenacli — AthenaCLI is a CLI tool for AWS Athena service that can do auto-completion and syntax highlighting.
- litecli — CLI for SQLite Databases with auto-completion and syntax highlighting.
- mssql-cli — A command-line client for SQL Server with auto-completion and syntax highlighting.
- mycli — A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.
- pgcli — Postgres CLI with autocompletion and syntax highlighting.
- vcli — Vertica CLI with auto-completion and syntax highlighting.
DB-schema navigation and visualization
- dbdiagram.io — Quick and simple tool for help you draw your database relationship diagrams and flow quickly using simple DSL language.
- ERAlchemy — Entity Relation Diagrams generation tool.
- SchemaCrawler — A free database schema discovery and comprehension tool.
- Schema Spy — Generating your database to HTML documentation, including Entity Relationship diagrams.
- tbls — CI-Friendly tool for document a database, written in Go.
Modelers
- Navicat Data Modeler — A powerful and cost-effective database design tool which helps you build high-quality conceptual, logical and physical data models.
- Oracle SQL Developer Data Modeler — Oracle SQL Developer Data Modeler is a free graphical tool that enhances productivity and simplifies data modeling tasks.
- pgmodeler — Data modeling tool designed for PostgreSQL.
Migration tools
- 2bass — Database configuration-as-code tool that utilizes concept of idempotent DDL scripts.
- flyway — Database migration tool.
- gh-ost — Online schema migration for MySQL.
- liquibase — Database-independent library for tracking, managing and applying database schema changes.
- migra — Like diff but for PostgreSQL schemas.
- node-pg-migrate — Node.js database migration management built exclusively for postgres. (But can also be used for other DBs conforming to SQL standard — e.g. CockroachDB.)
- Pyrseas — Provides utilities to describe a PostgreSQL database schema as YAML.
- SchemaHero — A Kubernetes operator for declarative database schema management (gitops for database schemas).
- Sqitch — Sensible database-native change management for framework-free development and dependable deployment.
- yuniql — Yet another schema versioning and migration tool just made with native .NET Core 3.0+ and hopefully better.
Code generation tools
- ddl-generator — Infers SQL DDL (Data Definition Language) from table data.
- scheme2ddl — Command line util for export Oracle schema to set of ddl init scripts with ability to filter undesirable information, separate DDL in different files, pretty format output.
Wrappers
- DreamFactory — A open source REST API backend for mobile, web, and IoT applications.
- Hasura GraphQL Engine — Blazing fast, instant realtime GraphQL APIs on Postgres with fine grained access control, also trigger webhooks on database events.
- jl-sql — SQL for JSON and CSV streams.
- mysql_fdw — PostgreSQL foreign data wrapper for MySQL.
- Oracle REST Data Services — A mid-tier Java application, ORDS maps HTTP(S) verbs (GET, POST, PUT, DELETE, etc.) to database transactions and returns any results formatted using JSON.
- Prisma — Prisma turns your database into a realtime GraphQL API.
- PostgREST — REST API for any Postgres database.
- prest — Is a way to serve a RESTful API from any databases written in Go.
- restSQL — SQL generator with Java and HTTP APIs, uses a simple RESTful HTTP API with XML or JSON serialization.
- resquel — Easily convert your SQL database into a REST API.
- sandman2 — Automatically generate a RESTful API service for your legacy database.
- sql-boot — Advanced REST and UI wrapper for your SQL-queries.
Backup tools
- pgbackrest — Reliable PostgreSQL Backup & Restore.
- BaRMan — Backup and Recovery Manager for PostgreSQL.
Replication/Data operation
- Datasette — A tool for exploring and publishing data.
- dtle — Distributed Data Transfer Service for MySQL.
- pgsync — Sync Postgres data between databases.
- pg_chameleon — MySQL to PostgreSQL replica system written in Python 3. The system use the library mysql-replication to pull the row images from MySQL which are stored into PostgreSQL as JSONB.
- PGDeltaStream — A Golang webserver to stream Postgres changes atleast-once over websockets, using Postgres logical decoding feature.
- repmgr — The Most Popular Replication Manager for PostgreSQL.
Scripts
- pgx_scripts — A collection of useful little scripts for database analysis and administration, created by our team at PostgreSQL Experts.
- pgsql-bloat-estimation — Queries to mesure statistical bloat in indexes and tables for PostgreSQL.
- pgWikiDont — SQL test that checks if your database follows rules from https://wiki.postgresql.org/wiki/Don't_Do_This.
- pg-utils — Useful PostgreSQL utilities.
- Postgres cheat sheet — Useful SQL-scripts and commands by <timescale.com>.
- postgres_dba — The missing set of useful tools for Postgres DBAs and all engineers.
- postgres_queries_and_commands.sql — Useful PostgreSQL Queries and Commands.
- TPT — These sqlplus scripts are for Oracle Database performance optimization & troubleshooting.
Monitoring/Statistics/Perfomance
- ASH Viewer — Provides a graphical view of active session history data within the Oracle and PostgreSQL DB.
- Monyog — Agentless & Cost-effective MySQL Monitoring Tool.
- mssql-monitoring — Monitor your SQL Server on Linux performance using collectd, InfluxDB and Grafana.
- Navicat Monitor — A safe, simple and agentless remote server monitoring tool that is packed with powerful features to make your monitoring effective as possible.
- Percona Monitoring and Management — Open source platform for managing and monitoring MySQL and MongoDB performance.
- pganalyze collector — Pganalyze statistics collector for gathering PostgreSQL metrics and log data.
- postgres-checkup — New-generation diagnostics tool that allows users to do a deep analysis of the health of Postgres databases.
- postgres_exporter — Prometheus exporter for PostgreSQL server metrics.
- pgDash — Measure and track every aspect of your PostgreSQL databases.
- PgHero — A performance dashboard for Postgres — health checks, suggested indexes, and more.
- pgmetrics — Collect and display information and stats from a running PostgreSQL server.
- pgMustard — A user interface for Postgres explain plans, plus tips to improve performance.
- pgstats — Collects PostgreSQL statistics, and either saves them in CSV files or print them on the stdout.
- pgwatch2 — Flexible self-contained PostgreSQL metrics monitoring/dashboarding solution.
- Telegraf PostgreSQL plugin — Provides metrics for your postgres database.
Zabbix
- Mamonsu — Monitoring agent for PostgreSQL.
- Orabbix — Orabbix is a plugin designed to work with Zabbix Enterprise Monitor to provide multi-tiered monitoring, performance and availability reporting and measurement for Oracle Databases, along with server performance metrics.
- pg_monz — This is the Zabbix monitoring template for PostgreSQL Database.
- Pyora — Python script to monitor Oracle Databases.
- ZabbixDBA — ZabbixDBA is fast, flexible, and continuously developing plugin to monitor your RDBMS.
Testing
- DbFit — A database testing framework that supports easy test-driven development of your database code.
- RegreSQL — Regression Testing your SQL queries.
Data generator
- Databene Benerator — It is a framework for generating realistic and valid high-volume test data for your system under test (avoiding the Datalite anti-pattern).
- dbForge Data Generator for MySQL — Powerful GUI tool for creating massive volumes of realistic test data.
- dbForge Data Generator for Oracle — Small but mighty GUI tool for populating Oracle schemas with tons of realistic test data.
- dbForge Data Generator for SQL Server — Powerful GUI tool for a fast generation of meaningful test data for databases.
Administration
- pgbadger — A fast PostgreSQL Log Analyzer.
- pgbedrock — Manage a Postgres cluster's roles, role memberships, schema ownership, and privileges.
- pgslice — Postgres partitioning as easy as pie.
HA/Failover/Sharding
- Citus — Postgres extension that distributes your data and your queries across multiple nodes.
- patroni — A template for PostgreSQL High Availability with ZooKeeper, etcd, or Consul.
- Percona XtraDB Cluster — A High Scalability Solution for MySQL Clustering and High Availability.
- stolon — Cloud native PostgreSQL manager for PostgreSQL high availability.
- pg_auto_failover — Postgres extension and service for automated failover and high-availability.
- pglookout — PostgreSQL replication monitoring and failover daemon.
- PostgreSQL Automatic Failover — High-Availibility for Postgres, based on industry references Pacemaker and Corosync.
- postgresql_cluster — PostgreSQL High-Availability Cluster (based on "Patroni" and "DCS(etcd)"). Automating deployment with Ansible.
- Vitess — Database clustering system for horizontal scaling of MySQL through generalized sharding.
Kubernetes
- KubeDB — Making running production-grade databases easy on Kubernetes.
- Postgres operator — The Postgres Operator enables highly-available PostgreSQL clusters on Kubernetes (K8s) powered by Patroni.
- Spilo — HA PostgreSQL Clusters with Docker.
- StackGres — Enterprise-grade, Full Stack PostgreSQL on Kubernetes.
Configuration Tuning
- MySQLTuner-perl — Script written in Perl that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability.
- PGConfigurator — Free online tool to generate an optimized
postgresql.conf
. - pgtune — PostgreSQL configuration wizard.
- postgresqltuner.pl — Simple script to analyse your PostgreSQL database configuration, and give tuning advice.
DevOps
- DBmaestro — DBmaestro accelerates release cycles & supports agility across the entire IT ecosystem.
- Toad DevOps Toolkit — Toad DevOps Toolkit executes key database development functions within your DevOps workflow —without compromising quality, performance or reliability.
Schema samples
- Oracle Database Sample Schemas — Oracle Database Sample Schemas.
Reporting
- Poli — An easy-to-use SQL reporting application built for SQL lovers.
Distributions
- DBdeployer — Tool that deploys MySQL database servers easily.
- dbatools — PowerShell module that you may think of like a command-line SQL Server Management Studio.
- Postgres.app — Full-featured PostgreSQL installation packaged as a standard Mac app.
- BigSQL — A developer-friendly distribution of Postgres.
- Elephant Shed — Web-based PostgreSQL management front-end that bundles several utilities and applications for use with PostgreSQL.
Security
- Acra — Database security suite. Database proxy with field-level encryption, search through encrypted data, SQL injections prevention, intrusion detection, honeypots. Supports client-side and proxy-side ("transparent") encryption. SQL, NoSQL.
Code formatters
- CodeBuff — Language-agnostic pretty-printing through machine learning.
Contributing
- Your contributions are always welcome! Please read the contribution guidelines first.
Есть находки для БД — делитесь. Также буду рад получить обратную связь — PR'ы и звездочки. Остались вопросы по созданию своих листов — тоже пишите.
maikus
Внимание к деталям. Единорог — парнокопытный.