ڈیٹا بیس ایڈیٹر جو آپ کے ڈیٹا کے ساتھ deploy ہوتا ہے، آپ کے laptop کے اندر نہیں۔
English · 简体中文 · 日本語 · Español · اردو · हिन्दी · 한국어 · Português (Brasil) · Русский
PostgreSQL project میں شامل: News · PostgreSQL Clients · Software Catalogue · Community Guide to GUI Tools
اس کے علاوہ Oracle، MySQL، Redis، Valkey، ClickHouse Visual Interfaces، ClickHouse SQL Clients، MariaDB Graphical Clients، MariaDB Ecosystem Hub، Trino، YugabyteDB، TimescaleDB، DragonflyDB، Garnet، OpenSearch، DuckDB، StarRocks، Databend، Aiven for PostgreSQL، Aiven for MySQL، ScyllaDB، Couchbase، Apache Cloudberry، Apache Doris، Apache Kafka، Apache Cassandra اور Apache Druid کی سرکاری دستاویزات میں بھی درج ہے
Quick Start • Live Demo • Install Options • Deploy Your Own
یہ اردو README کمیونٹی کا ترجمہ ہے اور انگریزی نسخے سے پیچھے ہو سکتا ہے۔ فرق کی صورت میں انگریزی نسخہ درست ہے۔
# Docker (recommended)
docker run -p 3000:3000 ghcr.io/libredb/libredb-studio:latest
# or with Node.js 24+ (without Docker)
npx @libredb/studioپھر http://localhost:3000 کھولیں۔ پہلی بار چلنے پر administrator کا password کسی configuration file کے بغیر log میں پرنٹ ہو جاتا ہے۔
اگر browser localhost یا HTTPS سے نہیں کھلتا (مثلاً مقامی network پر
http://192.168.x.x:3000)، توAUTH_COOKIE_SECURE=falseشامل کرنا ہوگا۔ ورنہ health check تو کامیاب ہو جاتا ہے، لیکن login خاموشی سے ناکام ہو کر بار بار login screen پر واپس لے آتا ہے۔
کیا آپ کو Helm، Homebrew، Snap، winget یا deb/rpm چاہیے؟ نیچے انسٹالیشن دیکھیں۔
آپ managed platform پر Postgres بناتے ہیں اور وہ چالیس سیکنڈ میں تیار ہو جاتا ہے۔
پھر آپ دیکھنا چاہتے ہیں کہ اس کے اندر کیا ہے۔ اس کے لیے یا تو آپ internet پر ایک port کھولتے ہیں، یا desktop client نصب کر کے SSH tunnel بناتے ہیں، یا ہار مان کر command line پر واپس آ جاتے ہیں۔ database کو چالیس سیکنڈ لگے؛ اس میں access کرنے کا طریقہ بنانے میں پوری شام گزر گئی۔
اب اسے scale پر سوچیں۔ application Postgres استعمال کرتی ہے، documents Mongo میں ہیں، cache Redis میں ہے، اور events ClickHouse میں ہیں۔ چار databases، چار clients، اور credentials کے چار مجموعے۔ پیر کو کوئی نیا شخص آتا ہے تو اپنی پہلی code line لکھنے سے پہلے اسے معلوم کرنا پڑتا ہے کہ کون سا data کہاں ہے، wiki اور تین private chats میں connection strings ڈھونڈنی پڑتی ہیں، VPN access کا انتظار کرنا پڑتا ہے، اور ہر engine کے لیے الگ tool نصب کرنا پڑتا ہے۔
Databases پہلے ہی منتقل ہو چکے ہیں۔ وہ Kubernetes، managed clouds اور customer VPCs میں چلے گئے ہیں جن تک bastion کے ذریعے ہی پہنچا جا سکتا ہے۔ لیکن انہیں پڑھنے کے tools ان کے ساتھ منتقل نہیں ہوئے۔ وہ اب بھی desktop applications ہیں: بھاری، per-seat license والے، استعمال سے پہلے install ہونے والے، اور اس سوچ کے ساتھ بنے ہوئے کہ آپ کے پاس صرف ایک database، ایک laptop اور ایک ایسا شخص ہے جو کبھی device تبدیل نہیں کرتا۔
LibreDB Studio اس کے برعکس راستہ اختیار کرتا ہے: tool کو data کے پاس لے جایا جاتا ہے، data کو tool کے پاس نہیں۔
اس جملے کو سنجیدگی سے لیں تو یہ محض ترجیح نہیں رہتا، بلکہ ایک specification بن جاتا ہے۔
- Editor کو browser میں چلنا چاہیے، کیونکہ data آپ کی machine میں نہیں ہے اور آپ کے teammates بھی نہیں۔
- اسے phone پر بھی کھلنا چاہیے، کیونکہ جس incident کو query کی ضرورت ہو وہ آپ کے laptop کے آن ہونے کا انتظار نہیں کرتا۔
- اسے infrastructure کے طور پر deploy ہونا چاہیے (container، Helm chart، Operator، one-click template)، کیونکہ database کے ساتھ رہنے والی ہر چیز اسی طرح install ہوتی ہے۔
- اسے embed کیا جا سکنا چاہیے، کیونکہ editor کے لیے سب سے مفید جگہ اسی product کے اندر ہے جس نے database بنایا ہے۔
- کسی چیز کو reserve نہیں کیا جا سکتا۔ آپ ہر اس environment میں per-seat licensed، tiered-features والا tool نہیں ڈال سکتے جسے آپ manage کرتے ہیں۔ اگر single sign-on کی الگ قیمت ہو، تو tool default طور پر deploy کیے جانے کے قابل نہیں رہتا۔
یہاں MIT سخاوت نہیں: یہ architecture کی سخت شرط ہے۔
PostgreSQL · MySQL · Oracle · Db2 LUW · SQL Server · SQLite · libSQL · DuckDB · MongoDB · Redis · Couchbase · Firestore · ClickHouse · Apache Druid · Elasticsearch · OpenSearch · Trino · BigQuery · Databend · Snowflake · Apache Spark · Apache Cassandra · Prometheus · Apache Kafka · etcd · Neo4j · Milvus · Qdrant · InfluxDB (InfluxQL) · InfluxDB 3 (SQL) · Oxia · S3-compatible object storage · Kubernetes · MQTT · RabbitMQ · OPC UA · MTConnect · Modbus · NETCONF · SNMP · Sparkplug B
تمام SQL engines ایک ہی schema explorer، ER diagrams، schema comparison اور monitoring panels استعمال کرتے ہیں۔ MongoDB اور Redis SQL engines نہیں ہیں: ان میں ER diagram یا schema comparison نہیں ہوتا۔ Druid، Elasticsearch، OpenSearch اور Trino کے ساتھ دو الگ مسائل ہیں۔ ان کے SQL interfaces HTTP پر چلتے ہیں، مگر ان میں ایسا URI format نہیں جسے یہ build سمجھ سکے، اس لیے انہیں host اور port سے configure کیا جاتا ہے۔ مزید یہ کہ ان کے SQL میں column تبدیل کرنے کی statements موجود نہیں، لہٰذا پیدا ہونے والی migrations اس limitation کو بیان کرتی ہیں؛ کسی غیر موجود DDL کو گھڑنے کی کوشش نہیں کرتیں۔ Couchbase کی schema-less collections کے ساتھ بھی یہی صورت ہے۔ Search clusters کے ER diagram میں boxes تو ہوتے ہیں مگر lines نہیں: indexes foreign keys declare نہیں کرتے، اور engine model میں declare کرنے کے لیے کوئی موجود بھی نہیں۔
| ڈیٹا بیس | Driver | صلاحیتیں |
|---|---|---|
| PostgreSQL | pg |
مکمل SQL IDE، EXPLAIN execution plans، transactions، query cancellation (pg_cancel_backend) |
| MySQL | mysql2 |
مکمل SQL IDE، EXPLAIN، transactions، query cancellation (KILL QUERY) |
| Oracle | oracledb (Thin موڈ) |
مکمل SQL IDE، FETCH FIRST N ROWS کے ساتھ pagination، V$ monitoring views، ANALYZE TABLE، ALTER INDEX REBUILD، transactions |
| Db2 LUW | db2-node (Rust میں لکھا DRDA client، native N-API addon، IBM client کے بغیر) |
Db2 for Linux, UNIX and Windows کے لیے SQL IDE: tables، views، materialized query tables، aliases، sequences، modules، routines اور triggers کا schema browser، محفوظ definitions، FETCH FIRST / OFFSET pagination، ہر table پر RUNSTATS اور REORG۔ TLS لازمی ہے جب تک آپ جان بوجھ کر اسے بند نہ کریں، کیونکہ اس کے بغیر driver password کو cleartext میں بھیجتا ہے۔ Driver کچھ types غلط پڑھتا ہے (non-ASCII text، 2^53 سے بڑا BIGINT، BOOLEAN، XML، LOBs)، اس لیے inline editing، import، EXPLAIN، transactions اور cancel بند ہیں؛ معلوم مسائل docs/providers/db2.md میں ہیں |
| SQL Server | mssql (tedious) |
مکمل SQL IDE، TOP N / OFFSET FETCH کے ساتھ pagination، sys.dm_* DMV، UPDATE STATISTICS، DBCC CHECKDB، transactions، Azure SQL کی خودکار شناخت |
| SQLite | bun:sqlite / node:sqlite (runtime کے مطابق) |
file یا memory میں مکمل SQL IDE |
| libSQL | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (Hrana protocol، POST /v2/pipeline، port 8080) |
مکمل SQL IDE۔ یہی type-id آپ کے اپنے libSQL server (sqld) اور Turso Cloud، دونوں سے connect کرتا ہے۔ یہ network پر SQLite dialect ہے، اور dbstat کے ساتھ tables اور indexes کا اصل size bytes میں دیتا ہے۔ credential password نہیں بلکہ auth token ہے۔ صرف دو maintenance operations ہیں، Reindex اور integrity check: server VACUUM، ANALYZE اور PRAGMA optimize کو رد کرتا ہے |
| DuckDB | @duckdb/node-api (مقامی N-API addon، ہر platform کے لیے تقریباً 68 MB) |
مقامی DuckDB files یا :memory: پر مکمل SQL IDE، جو application کے اسی server پر چلتا ہے۔ EXPLAIN (FORMAT JSON) کے ساتھ physical plan tree، duckdb_* catalog introspection، pragma_storage_info کی block allocation سے table کا اصل size، اور خود driver کے interrupt() سے query cancellation۔ تین maintenance operations: VACUUM، ANALYZE اور CHECKPOINT۔ یہاں REINDEX syntax error ہے، جبکہ PRAGMA integrity_check اور PRAGMA optimize موجود نہیں، اس لیے پیش نہیں کیے جاتے۔ slow-query log یا sessions list نہیں: DuckDB ان میں سے کوئی بھی ظاہر نہیں کرتا، اس لیے panels 0 دکھانے کے بجائے یہ بات بتاتے ہیں۔ ایک database file کو operating system کا صرف ایک process کھول سکتا ہے (read-only mode میں بھی)، اس لیے Studio کی دوسری instance اس file کو نہیں کھول سکتی جو پہلی instance نے کھولی ہوئی ہے |
| MongoDB | mongodb |
JSON query editor اور collections پر operations (find, aggregate, insert, update, delete) |
| Couchbase | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (Query اور انتظامی REST) | مکمل SQL++ IDE، EXPLAIN، buckets، scopes اور collections explorer، INFER کے ذریعے field inference |
| Firestore | کوئی مخصوص driver نہیں؛ REST (Firestore REST API v1) | صرف پڑھنے کے لیے: tree میں اوپری سطح کی collections، Keys panel میں کسی بھی گہرائی تک documents اور subcollections، Source tab میں document کا ڈیٹا، اور Admin SDK کی query chain جسے Studio پارس کرتا ہے اور کبھی JavaScript کے طور پر نہیں چلاتا؛ count()، sum()، average()، findNearest اور Query Explain کے ساتھ |
| ClickHouse | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (SQL انٹرفیس، port 8123) | مکمل SQL IDE، JSON میں EXPLAIN tree، system tables کے ذریعے schema introspection، OPTIMIZE TABLE |
| Apache Druid | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (POST /druid/v2/sql) |
read-only SQL IDE، native query کا EXPLAIN tree، INFORMATION_SCHEMA سے introspection، sys.* کے ساتھ monitoring |
| Elasticsearch | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (POST /_sql?format=json، port 9200) |
read-only SQL IDE، mapping پر مبنی indexes اور fields explorer، cluster health، اور ہر index کے لیے document count اور size۔ EXPLAIN نہیں، maintenance operations نہیں، اور slow queries یا sessions panels بھی نہیں۔ Elasticsearch SQL میں OFFSET بھی نہیں، اس لیے results کا دوسرا page نہیں مانگا جا سکتا |
| OpenSearch | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (POST /_plugins/_sql، port 9200) |
Elasticsearch والا ہی provider module، وہی read-only IDE اور وہی explorer۔ یہاں LIMIT n OFFSET m کام کرتا ہے، اس لیے pagination دستیاب ہے |
| Trino | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (client protocol، POST /v1/statement، port 8080) |
تمام configured catalogs پر مکمل SQL IDE، connection میں مقرر catalog کے information_schema کے ذریعے schema tree، system.runtime اور jmx سے monitoring، SHOW STATS سے اصل row counts، query cancellation اور kill_query کے ساتھ maintenance۔ Trino query engine ہے اور data store نہیں کرتا، اس لیے کہیں بھی primary keys، foreign keys یا indexes declare نہیں کرتا: ER diagram میں lines کے بغیر boxes ہوتے ہیں، inline editing بند رہتی ہے، اور capacity panel مصنوعی size بنانے کے بجائے catalogs دکھاتا ہے۔ ناکام statements بھی HTTP 200 کے ساتھ واپس آتی ہیں؛ اور cluster میں authentication بند ہو تب بھی plain HTTP پر password رد کر دیا جاتا ہے |
| Databend | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (Databend کا اپنا query API، POST /v1/query، port 8000) |
Self-hosted Databend server یا Databend Cloud warehouse پر SQL IDE: tree میں catalogs اور databases، ان کی tables، views، materialized views اور dynamic tables کے ساتھ، text EXPLAIN plans، default catalog کی system.* سے monitoring، اور Sessions panel سے KILL QUERY کے ذریعے query cancellation۔ ہر statement اپنے الگ session میں چلتی ہے، اس لیے transaction یا temporary table اسے کھولنے والی statement کے ساتھ ختم ہو جاتی ہے۔ Databend کوئی keys declare نہیں کرتا، اس لیے inline row editing بند رہتی ہے، اور Create Table بھی۔ plain HTTP پر ایسے host کو password، جو نہ loopback ہے نہ tunnel سے، تب تک refuse ہوتا ہے جب تک connection رضامندی نہ دے۔ Cloud connection اپنا warehouse بتاتا ہے، جو پہلی statement پر resume ہوتا ہے اور اسی سے billing شروع ہوتی ہے؛ connection کھولنا بھی اس میں شامل ہے، کیونکہ وہ object tree پڑھتا ہے۔ custom CA اور client certificates کے ساتھ TLS؛ SSH tunnel |
| BigQuery | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (BigQuery REST API، jobs.query) |
SQL (GoogleSQL) IDE: tree میں projects، datasets، tables، views اور materialized views، statements jobs.query کے ذریعے۔ EXPLAIN ایک dry run ہے جو processed bytes بتاتا ہے۔ Service-account key یا access-token credentials |
| Snowflake | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (Snowflake SQL API v2) | SQL IDE: tree میں databases، schemas، tables، views، streams، tasks، stages وغیرہ، ہر request میں ایک statement۔ EXPLAIN USING JSON چلائے بغیر compile کرتا ہے۔ Key-pair یا programmatic access token سے sign-in، ہر statement ایک ہی role کے طور پر |
| Apache Spark | @grpc/grpc-js اور apache-arrow، gRPC (Spark Connect، Spark 4.1 اور بعد کے ورژن) |
SQL IDE: ٹری میں کیٹلاگ اور نیم اسپیس، ان کی ٹیبلز، ویوز اور فنکشنز، ہر درخواست کے لیے ایک Spark سیشن، EXPLAIN FORMATTED چلائے بغیر پلان دکھاتا ہے۔ ٹوکن TLS، loopback یا SSH ٹنل پر؛ ایجنٹ پلان موڈ |
| Apache Cassandra | cassandra-driver (خالص JavaScript، native modules کے بغیر) |
native protocol (port 9042) پر CQL IDE، partition اور clustering keys نشان زد keyspaces explorer، system_views سے summary، uptime اور چلتی ہوئی statements۔ Connection کے لیے localDataCenter لازمی ہے: اس کے بغیر driver connect کرنے سے انکار کر دیتا ہے۔ EXPLAIN نہیں (CQL grammar میں یہ keyword موجود ہی نہیں)، query cancellation نہیں (protocol میں cancel frame نہیں) اور maintenance operations نہیں (compaction، repair اور flush، nodetool کے JMX operations ہیں)۔ اور یہ کوئی row count یا size نہیں دکھاتا: Cassandra صرف disk پر پہلے سے لکھی files سے partitions کا اندازہ (500 rows کی table کو 143 پڑھا گیا) اور MiB میں integers (19,476 bytes کی table کو 1 MiB پڑھا جاتا ہے) دے سکتا ہے، اس لیے غلط number دکھانے کے بجائے ہم کچھ نہیں دکھاتے |
| Prometheus | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (Prometheus HTTP API، port 9090) | PromQL editor جو text کو بغیر تبدیلی server تک بھیجتا ہے، نتائج grid اور chart tab میں (rate(x[5m])[1h:1m] جیسی step والی subquery timestamps پر lines کی صورت میں chart ہوتی ہے: tab پہلی series سے کھلتا ہے، Y-Axis menu سے مزید series شامل کی جا سکتی ہیں، ہر series کی ایک line، اور ایک وقت میں زیادہ سے زیادہ آٹھ lines بنتی ہیں، اس سے آگے chart "Showing first 8 of N series" دکھاتا ہے؛ لیکن chart کسی missing sample کو، اور numbers کے درمیان NaN یا Inf کو، 0 پر دکھاتا ہے، اس لیے الگ الگ وقت پر scrape ہونے والے targets کی raw range query جھوٹے صفر دکھاتی ہے)، metrics explorer جس میں label names columns اور metadata source ہیں، rule groups اور recording و alerting rules (firing alert tree میں نشان زد)، scrape pools اور targets (down target tree میں نشان زد)، اور health، version، uptime اور TSDB statistics۔ Design کے لحاظ سے صرف پڑھنے کے لیے: admin API یا remote write استعمال نہیں ہوتے، EXPLAIN نہیں (parse endpoint ابھی experimental ہے) اور maintenance operations نہیں۔ Plain HTTP پر credential رد نہیں ہوتا بلکہ بھیج دیا جاتا ہے، اس لیے جس network پر آپ کا اختیار نہ ہو وہاں TLS فعال کریں |
| Apache Kafka | @platformatic/kafka (pure TypeScript، port 9092) |
JSON read request جو topic کو partition، offset یا timestamp سے، سب سے پرانے offset سے یا تازہ ترین messages پڑھتی ہے؛ keys، values اور headers JSON، text یا base64 میں decode ہوتے ہیں اور Confluent format والی value اپنے schema id سے نشان زد ہوتی ہے؛ topic browser میں partitions اور non-default configs (offline یا under-replicated topic نشان زد)، دونوں protocols کے consumer groups اور ہر partition کا lag، brokers اور ان کے configs، اور health، topic count اور disk size۔ ساخت کے لحاظ سے صرف پڑھنے کے لیے: نہ produce، نہ offset commit، نہ consumer group میں شمولیت، نہ topic بنانا۔ Custom CA اور client certificates کے ساتھ TLS، اور SASL PLAIN یا SCRAM صرف TLS پر؛ SSH tunnel نہیں، کیونکہ brokers تک ان کے advertised addresses پر پہنچا جاتا ہے |
| etcd | @grpc/grpc-js (pure JavaScript، gRPC، port 2379) |
Editor میں etcdctl کا subset (get، put، del، txn، leases، محدود watch، members، alarms، users اور roles)؛ tree میں key-prefix groups اور Keys panel میں ہر key؛ کسی key کی value اس کی revision سے guarded ایک transaction میں edit ہوتی ہے؛ admins کے لیے compaction، defragmentation اور alarm disarm، ہر ایک connection کا نام type کر کے confirm ہوتا ہے۔ Kubernetes prefix یا compact_rev_key پر ہر write refuse ہوتا ہے، اور Kubernetes secrets اور protobuf یا encrypted values کبھی نہیں دکھتیں۔ Custom CA کے ساتھ TLS، client certificates (ان کا Common Name etcd user) اور password sign-in صرف TLS پر؛ SSH tunnel؛ seed میں اعلان کردہ read-only mode |
| Neo4j | neo4j-driver-lite (pure JavaScript، Bolt، port 7687) |
Neo4j 5.26 LTS کے لیے editor میں read-only Cypher، ہر run میں ایک statement؛ tree میں node labels اور relationship types (ان کی properties بطور columns)، indexes اور constraints؛ grid میں nodes، relationships اور paths بطور tagged JSON cells، 64-bit integers اور temporal values بغیر precision کھوئے؛ Community کے فراہم کردہ monitoring panels۔ ہر statement پہلے اپنے tokens پر read policy سے، پھر EXPLAIN کے ذریعے server کی اپنی classification سے (جسے allowlisted SHOW form چھوڑ دیتا ہے) گزرتا ہے اور READ session میں چلتا ہے، اس لیے کسی write کو تینوں layers توڑنی ہوں گی۔ EXPLAIN یا PROFILE view، maintenance، agent execution اور MCP run_read_query نہیں؛ Custom CA کے ساتھ TLS اور SSH tunnel؛ connection string نہیں |
| Milvus | @grpc/grpc-js (pure JavaScript، gRPC، port 19530) |
Editor میں Milvus کی اپنی REST v2 requests (ایک JSON body کے ساتھ POST /v2/vectordb/<route>) سے reads، exact counts اور ہر vector type پر vector search، BM25 اور hybrid search سمیت؛ tree میں databases اور collections، ان کے fields، partitions، indexes اور load state؛ dimension کے ساتھ vector cells اور پوری value کی copy؛ admins کے لیے preview اور confirmation کے ساتھ Load اور Release۔ Studio کوئی data نہیں لکھتا، server سے کسی دوسری service کو call کروانے والی requests refuse کرتا ہے، اور default root password پر warning دیتا ہے۔ Custom CA اور client certificates کے ساتھ TLS؛ password صرف TLS پر، loopback پر یا SSH tunnel سے؛ seed میں اعلان کردہ read-only mode |
| Qdrant | کوئی نہیں، HTTP (Qdrant کا REST API، port 6333) | Editor میں Qdrant کی اپنی REST requests (ایک JSON body کے ساتھ METHOD /path)، سترہ read routes: points پڑھنا، scroll، exact counts، facets، اور dense، sparse اور multivector data پر queries، batches اور grouped queries، local BM25 model سمیت؛ tree میں collections، ان کے vectors، payload indexes اور payload keys کا sampled view؛ dimension کے ساتھ vector cells اور پوری value کی copy۔ Studio کچھ نہیں لکھتا، local BM25 کے سوا ہر inference input refuse کرتا ہے، اور بغیر expiry یا manage access والے JWT پر warning دیتا ہے۔ Custom CA اور client certificates کے ساتھ TLS؛ key صرف TLS پر، loopback پر یا SSH tunnel سے؛ seed میں اعلان کردہ read-only mode |
| InfluxDB (InfluxQL) | کوئی نہیں، HTTP (InfluxDB کا v1 API، port 8086) | Editor میں read-only InfluxQL، v1 /query API پر InfluxDB 1.x، 2.x اور 3 کے لیے، ہر run میں ایک SELECT، SHOW یا EXPLAIN؛ tree میں databases اور measurements، ہر measurement کے tags اور fields اس کے columns کے طور پر، اور grid میں 2^53 سے بڑے integers اور nanosecond timestamps بالکل درست۔ Connection میں کچھ بھی لکھا ہو، read-only: 1.x اور 2.x پر DROP DATABASE سے پہلے Studio کی اپنی read policy ہی واحد رکاوٹ ہے، اس لیے ہر دوسرا statement کسی بھی request سے پہلے refuse ہوتا ہے، اور کوئی write endpoint نہیں چھوا جاتا۔ User اور password، یا password field میں token؛ plain HTTP پر ایسے host کو credential، جو نہ loopback ہے نہ tunnel سے، تب تک refuse ہوتا ہے جب تک connection رضامندی نہ دے؛ InfluxDB 3 server پر _internal کبھی نہیں پڑھا جاتا |
| InfluxDB 3 (SQL) | کوئی نہیں، HTTP (InfluxDB 3 کا SQL API، port 8181) | Editor میں read-only SQL، InfluxDB 3 Core اور Enterprise کے لیے؛ tree میں connection کے database کی tables، ان کے columns کے ساتھ۔ Connection میں کچھ بھی لکھا ہو، read-only: route table کسی write، token، cache یا plugin endpoint تک نہیں پہنچتی، اور configure endpoints میں سے صرف database listing تک، ایک GET، جو statement read keyword سے شروع نہیں ہوتا وہ کسی بھی request سے پہلے refuse ہوتا ہے، اور اس کے اوپر server کا planner ہر write refuse کرتا ہے۔ ایک token، کوئی user نام نہیں؛ plain HTTP پر ایسے host کو token، جو نہ loopback ہے نہ tunnel سے، تب تک refuse ہوتا ہے جب تک connection رضامندی نہ دے؛ 1.x یا 2.x server پر لگانے سے InfluxDB (InfluxQL) چننے کو کہتا ہے |
| Oxia | @grpc/grpc-js (pure JavaScript، gRPC، port 6648) |
Read-only oxia client commands (get، list، range-scan)، tree میں shards اور Keys panel میں ہر key |
| S3-compatible object storage | none، HTTP (S3 REST API، path style، Studio کے اپنے SigV4 code سے signed؛ Parquet preview کے لیے hyparquet) |
Read-only AWS CLI read commands (aws s3 ls، aws s3api list-buckets، aws s3api head-object، aws s3api list-object-versions) اور Studio کا اپنا preview؛ tree میں buckets اور Keys panel میں folders، ایک وقت میں ایک level؛ object کا metadata اور text، JSON، CSV اور Parquet کا capped preview۔ MinIO، Silo، Garage اور RustFS پر verified؛ AWS S3 اور hosted services پر verified نہیں |
| Kubernetes | کوئی مخصوص driver نہیں؛ براہِ راست HTTP (API server کا REST API، port 6443) | Read-only: editor میں kubectl کا subset (get، describe، logs، top، events، explain، auth can-i)، tree میں namespaces اور ان کے kinds، ہر object کے YAML view کے ساتھ، اور connection dialog میں kubeconfig import۔ Secret values کبھی نہیں دکھائی جاتیں |
| MQTT | mqtt-packet (صرف اس کا پارسر؛ Studio جو پانچ پیکٹ بھیجتا ہے، کنکشن مینیجر اور یک طرفہ والو Studio کا اپنا کوڈ ہیں) |
ساخت ہی سے صرف پڑھنے کے لیے: باہر جانے والا راستہ صرف CONNECT، SUBSCRIBE، UNSUBSCRIBE، PINGREQ اور DISCONNECT لکھ سکتا ہے، PUBLISH لکھنے والا کوئی فنکشن موجود نہیں، اور CONNECT کوئی Will نہیں رکھتا۔ Keys پینل ایک ہی سبسکرپشن سے ٹاپک ٹری بناتا ہے اور ہر قطار کے ساتھ سرور کی بتائی ہوئی باقی مدت دکھاتا ہے؛ ٹاپک کھولنے پر اس کا پے لوڈ اور میٹا ڈیٹا نظر آتا ہے۔ MQTT میں ٹاپکس کی فہرست دینے والا کوئی کمانڈ نہیں، اس لیے کوئی بھی پڑھائی خود کو مکمل نہیں کہتی: ہر پڑھائی بتاتی ہے کہ اس نے کیا دیکھا، کیوں رکی، اور کس نقصان کو ثابت کر سکتی ہے۔ $share/، $queue/ اور $exclusive/ فلٹرز SUBSCRIBE بھیجنے سے پہلے ہی رد کر دیے جاتے ہیں، کیونکہ ان میں سے ہر ایک Studio کے ساتھ سبسکرائب کیے ہوئے آلات سے پیغام چھین لیتا ہے۔ Mosquitto، EMQX، HiveMQ CE، NanoMQ اور RabbitMQ 4 پر تصدیق شدہ |
| RabbitMQ | کوئی نہیں: مینجمنٹ HTTP API (پورٹ 15672) اور Studio کا اپنا AMQP 0-9-1 ریڈ کلائنٹ (پورٹ 5672) | ساخت کے لحاظ سے صرف پڑھنے کے لیے: ریڈ کلائنٹ publish، پیغام نکالنا یا declare انکوڈ نہیں کر سکتا۔ درخت میں ورچوئل ہوسٹ، اسٹریم، قطاریں اور ایکسچینج؛ JSON ریڈ درخواست اسٹریم کے پیغامات پڑھتی ہے، قطار کے کبھی نہیں |
| OPC UA | node-opcua-client (خالص JavaScript، opc.tcp، پورٹ 4840) |
ساخت ہی سے صرف پڑھنے کے لیے: کلائنٹ کی سیم صرف آٹھ پڑھنے والی سروسز بتاتی ہے (GetEndpoints، CreateSession، ActivateSession، Browse، BrowseNext، Read، HistoryRead اور CloseSession)، اور پرووائیڈر میں Write، Call، HistoryUpdate یا کوئی سبسکرپشن کہیں موجود نہیں۔ کی پینل ایڈریس اسپیس کو ایک ایک سطح، فی سطح ایک Browse سے دیکھتا ہے؛ کلید ایک ایسکیپ کیا ہوا براؤز راستہ ہے، کیونکہ BrowseName میں خود جداکار آ سکتا ہے۔ کوئی نوڈ کھولنے پر اس کی قیمت، حالت، دونوں وقتی نشان اور کھولا گیا AccessLevel نظر آتا ہے، اور کنسول ایک ہی JSON درخواست سے موجودہ قیمتیں یا خام تاریخ پڑھتا ہے۔ ہر حد Studio کی اپنی ہے، سرور کی اعلان کردہ حد نہیں: ماپے گئے چار سرورز میں سے دو اپنی اعلان کردہ حد سے بہت آگے کی درخواستیں بھی پوری کرتے ہیں اور ایک اسے 0 بتاتا ہے۔ میتھڈ نوڈ فہرست میں آتا ہے، کبھی چلایا نہیں جاتا۔ Microsoft OPC PLC 2.15.10، open62541 1.5.9، Python asyncua 2.1.0 اور Eclipse Milo ڈیمو پر جانچا گیا |
| MTConnect | کوئی نہیں: مشترکہ node:http(s) ٹرانسپورٹ پر اس ریپازٹری کا اپنا کلائنٹ (پورٹ 5000) |
بناوٹ سے ہی صرف پڑھنے کے لیے: ریکویسٹ ٹیبل میں نو روٹ ہیں اور ہر ایک GET ہے، اس لیے بھیجنے کے لیے کوئی PUT، POST یا سٹریم نہیں۔ ڈیوائس ایک کنٹینر ہے، data item اور condition وہ relations ہیں جن کی سطریں value، timestamp اور sequence ہیں، اور ہر asset کی XML ایک Source ٹیب میں کھلتی ہے |
| Modbus | کوئی نہیں: مشترکہ egress اصول سے گزرتے ہوئے raw socket پر اس ریپازٹری کا اپنا کلائنٹ (پورٹ 502، MODBUS/TCP Security کے لیے 802) | ساخت کے اعتبار سے read-only: encoder صرف چار read function code اور device identification بناتا ہے، کوئی function لکھنا نہیں بنا سکتا، اور ایک valve ہر باہر جانے والے byte کو دوبارہ جانچتا ہے۔ Modbus میں discovery نہیں ہے، اس لیے tree اس register map سے بنتا ہے جو connection کے ساتھ رکھا جاتا ہے، اور ایک read اس map کے نامزد کردہ points پر ایک JSON request ہے |
| NETCONF | ssh2 (صرف SSH ٹرانسپورٹ؛ یہ ریپازٹری ساکٹ کھول کر سونپ دیتی ہے، اور NETCONF کی framing، requests اور session اس کی اپنی ہیں، پورٹ 830) |
بناوٹ سے ہی صرف پڑھنے کے لیے: requests.ts پانچ request body بناتا ہے اور ان میں چار پڑھنے والے ہیں، <get-config>، <get>، <get-data> اور <get-schema>، پانچواں session بند کرتا ہے، اور کوئی function <edit-config>، <copy-config>، <commit> یا <lock> نہیں بناتا۔ datastore ایک کنٹینر ہے اور اس کے نیچے YANG module دوسرا، module کا پہلے درجے کا container یا list ایک آبجیکٹ ہے، اور list entry کے key leaf اسی آبجیکٹ کے کالم ہیں |
| SNMP | کوئی نہیں: مشترکہ ایگریس اصول سے ہوتے ہوئے UDP پر اس ریپازٹری کا اپنا کلائنٹ (پورٹ 161) | بناوٹ سے ہی صرف پڑھنے کے لیے: باہر جانے والا والو Get، GetNext یا GetBulk کے علاوہ ہر PDU کو رد کرتا ہے، اس لیے کوئی Set ساکٹ تک پہنچتا ہی نہیں۔ آبجیکٹ گروپ ایک کنٹینر ہے، ذیلی شاخ کا walk ہی پڑھنا ہے، اور ٹیبل GetBulk کے جوابوں سے بنتی ہے |
| Sparkplug B | کوئی نہیں: مشترکہ node:net اور node:tls ٹرانسپورٹ پر اس ریپازٹری کا اپنا محدود MQTT سیشن (پورٹ 1883، یا SSL / TLS پینل سے 8883) |
ساخت کے لحاظ سے صرف پڑھنے کے لیے: اینکوڈر میں PUBLISH لکھنے والا کوئی فنکشن نہیں، اور CONNECT کوئی will نہیں بھیجتا، کیونکہ 5.4 ایج نوڈ کے سرٹیفکیٹِ موت کو اس کا will قرار دیتا ہے اور will مقرر کرنے والا قاری اپنا ساکٹ ٹوٹنے پر موت کا پیغام شائع کر دیتا۔ ایک group اور ایک edge node کنٹینر ہیں، اور ہر metric ایک قطار ہے جس کی قیمت، وقت کی مہر اور تعریف اسے قرار دینے والے سرٹیفکیٹِ پیدائش سے آتی ہے |
| Redis | ioredis |
command editor، keys explorer، INFO پر مبنی monitoring |
Transport security cross-cutting ہے، engine پر منحصر نہیں۔ SSH tunnel provider کے connection کھولنے سے پہلے قائم ہوتا ہے، اور connection کو local endpoint کی طرف rewrite کر دیتا ہے: اسی لیے یہ engine پر منحصر نہیں اور host اور port کے ساتھ configured ہر connection پر لاگو ہوتا ہے، سوائے Kafka connection کے، جو tunnel رد کرتی ہے کیونکہ Kafka client ہر broker تک اس کے advertised address پر پہنچتا ہے، جسے ایک address forward کرنے والا tunnel نہیں لے جا سکتا۔ Connection string سے بھری جانے والی connections (MongoDB، Couchbase اور ClickHouse میں ممکن) میں host یا port نہیں ہوتا، اس لیے وہ tunnel سے نہیں گزرتیں؛ SQLite اور DuckDB میں بھی دونوں نہیں ہوتے۔ SSL/TLS panel فی الحال PostgreSQL، MySQL، SQL Server، Couchbase، ClickHouse، Druid، Elasticsearch، OpenSearch، Trino، Prometheus اور Apache Kafka پر اثر انداز ہوتا ہے؛ Trino میں یہ اختیاری نہیں کیونکہ coordinator plain HTTP پر passwords رد کرتا ہے۔ Oracle، MongoDB اور Redis اس option کو نظر انداز کرتے ہیں، اس لیے ان تینوں کا traffic encrypted ہو گا یا نہیں، اس کا انحصار connection string پر ہے، dialog کے انتخاب پر نہیں۔
SQL کے لیے بنے interface میں Redis کو لانے کی بنیاد ایک convention ہے۔
getSchema()SCANسے key prefixes کو "tables" میں گروپ کرتا ہے، جو block نہیں کرتا (کبھی بھیKEYS *نہیں)؛ health اور metricsINFOسے، جبکہ slow queries اور sessionsSLOWLOG GETاورCLIENT LISTسے آتی ہیں۔
- Monaco engine: وہی core جو VS Code استعمال کرتا ہے۔
- Schema-aware autocomplete: tables، columns اور keywords۔
- Tabbed workspace: ہر tab کی اپنی execution state۔
- Visual EXPLAIN: bottlenecks ڈھونڈنے کے لیے graphical execution plans۔
- Interactive ER diagrams: اصلی foreign-key edges، cardinality labels، minimap، table search اور filtering، compact mode، اور PNG اور SVG export کے ساتھ schema graph۔ خودکار hierarchical layout ELK.js کرتا ہے۔
- Schema comparison اور migrations: ایک ہی یا مختلف connections کے schemas کے snapshots کو ساتھ ساتھ compare کریں۔ رنگوں کے ساتھ differences view (added، removed، modified) اور PostgreSQL، MySQL، SQLite، Oracle اور SQL Server کے لیے migration SQL کی خودکار generation، نیز ClickHouse column changes۔
- Snapshots timeline: schema snapshots کے ساتھ ایک افقی timeline۔ دو points منتخب کریں اور فوراً compare کریں، تاکہ schema کی تبدیلی کا ارتقا دیکھا جا سکے۔
AI کی بنیادی سطح editor کے ساتھ موجود ایک agent panel ہے۔ کوئی مقصد دیا جاتا ہے — "کس department میں سب سے زیادہ employees ہیں؟"، "یہ query اتنی slow کیوں ہے؟" — اور Start دبایا جاتا ہے۔ Execution connected database کے لیے SQL تیار کرتی ہے، results پڑھتی ہے، اور ایک report لکھتی ہے جس کے دعوے ان results کا حوالہ دیتے ہیں۔
- کسی بھی LLM کے ساتھ مطابقت: default طور پر Gemini استعمال کرتا ہے، اور OpenAI، Ollama اور OpenAI-compatible endpoint (LM Studio، LiteLLM، vLLM) کے ساتھ کام کرتا ہے۔
- Query security analysis: destructive statements (DELETE، DROP، TRUNCATE) کے لیے execution سے پہلے risk evaluation۔
- Query explanation: EXPLAIN plans کو سادہ زبان میں، optimization suggestions کے ساتھ۔
- Schema knowledge: connected database کا schema context کے طور پر بھیجا جاتا ہے، اس لیے explanation آپ کی اپنی tables اور columns کے نام لیتی ہے۔
- Data profiler summary: profiler کی فی-column statistics کی summary۔ اس context میں ہر column کے
minاورmaxشامل ہیں، جو آپ کے data کی حقیقی values ہیں؛ Agent Data Flow دیکھیں۔
- Universal grid: لاکھوں rows کے لیے virtualized rendering (TanStack)۔
- Inline editing: grid میں براہِ راست values update کرنے کے لیے double-click، ان engines میں جن کے SQL میں ایک table پر row update موجود ہے (باقی میں control ظاہر نہیں ہوتا)۔
- Column filters: query دوبارہ لکھے بغیر explore کرنے کے لیے results پر text filters۔
- Interactive pivot table: client-side pivoting، پانچ aggregate functions (COUNT، SUM، AVG، MIN، MAX) اور متعلقہ SQL کی generation۔
- Export: فوری CSV اور JSON۔
- آٹھ chart types: Recharts کے ساتھ bar، line، pie، area، scatter، histogram، stacked bar اور stacked area۔ hour، day، week، month یا year کے لحاظ سے grouping، اور محفوظ ہو کر دوبارہ load ہونے والی chart configurations۔
- Data profiler: ایک click میں table profiling، column statistics (null percentage، cardinality، minimum اور maximum، sample values) اور model سے تیار ہونے والے narrative summaries کے ساتھ۔
- ORM code generator: tables کے اصل schema سے TypeScript interfaces، Zod schemas، Prisma models، Go structs، Python dataclasses اور Java POJOs۔
- Test-data generator: schema-aware fake data اور 30 سے زائد semantic column inferences (email، phone، name، address اور مزید)۔ MongoDB کے
insertManyکے لیے INSERT statements یا JSON پیدا کرتا ہے۔ - Database documentation: اصل schema سے تیار، searchable data dictionary، model-assisted documentation اور Markdown export کے ساتھ۔
- Authentication کے دو modes: local username/password، یا OpenID Connect (OIDC) کے ذریعے single sign-on، environment variable سے قابلِ تبدیلی۔
- Provider-agnostic OIDC: ہر OIDC-compliant provider کے ساتھ کام کرتا ہے — Auth0، Keycloak، Okta، Azure AD، Zitadel، Google اور دیگر۔
- PKCE security: Proof Key for Code Exchange (S256) کے ساتھ Authorization Code Flow۔
- Automatic role mapping: configurable claim mapping، nested claims کے لیے dot notation کے ساتھ (مثلاً
realm_access.roles)۔ - Provider logout: sign out پر مقامی JWT session اور identity provider، دونوں کی session بند ہو جاتی ہے۔
- Live monitoring dashboard: سات tabs — overview، performance، queries، sessions، tables، storage اور connection pool۔
- Trend charts: real-time metrics (connections، cache hit rate، buffer pool، deadlocks) circular-buffer history کے ساتھ، اور 5 سے 60 seconds کے درمیان configurable automatic refresh۔
- Threshold alerts: cache hit rate، connection usage، deadlocks اور buffer-pool usage کے لیے رنگ دار health indicators (healthy، warning، critical)۔
- One-click maintenance: engine کے مطابق
VACUUM،ANALYZE،REINDEX،UPDATE STATISTICS،DBCC CHECKDBاورALTER INDEX REBUILD۔ - Audit log: admin Audit tab سرور کے حالیہ audit events دکھاتا ہے، جیسے sign-in، permission denial، maintenance action، object edit اور agent و MCP کی operation، ہر ایک کے ساتھ وہ user جو اس کے پیچھے ہے، اور signed-in admin کی اپنی query history۔ دونوں current filters کا لحاظ رکھتے ہوئے CSV یا JSON میں export ہوتے ہیں۔ [governance](docs/GOVERNANCE.md#query-events) کے تحت Studio ہر اس statement کا query event ریکارڈ کرتا ہے جسے کوئی شخص چلاتا ہے، اور control plane وہ organization-wide record رکھتا ہے۔
| طریقہ | کمانڈ |
|---|---|
| Docker | docker run -p 3000:3000 ghcr.io/libredb/libredb-studio:latest |
| npx | npx @libredb/studio |
| Helm | helm install libredb oci://ghcr.io/libredb/charts/libredb-studio |
| Homebrew | brew trust libredb/tap && brew install libredb/tap/libredb-studio |
| Snap | sudo snap install libredb-studio |
| winget | winget install LibreDB.Studio |
| deb / rpm (server اور systemd service کے لیے) | ریلیزز کا صفحہ |
| Desktop application (AppImage / deb) | ریلیزز کا صفحہ۔ مقامی window؛ server مقامی sidecar کے طور پر چلتا ہے اور login screen نہیں آتی۔ یہ اوپر والی قطار والا server package نہیں ہے۔ |
| Desktop application (Flatpak، sandbox میں) | flatpak --user remote-add --if-not-exists flatpark https://dl.flatpark.org/flatpark.flatpakrepoflatpak --user install flatpark org.libredb.Studio |
brew trust صرف ایک بار چلتا ہے (Homebrew 6+ درکار ہے؛ اگر command موجود نہ ہونے کا پیغام آئے تو پہلے brew update چلائیں)۔ Docker، Helm اور Snap کو configuration کی ضرورت نہیں: پہلی بار چلنے پر administrator کا password بالترتیب container log، pod log اور sudo snap logs libredb-studio میں پرنٹ ہوتا ہے۔ ہر channel کی مکمل ہدایات (commands، configuration، systemd کے ساتھ استعمال، Docker images کا tagging model) docs/DISTRIBUTION.md میں موجود ہیں۔
One-click deployment templates: Railway، Dokploy، CapRover، Sealos، Kubero، Cosmos، DigitalOcean Marketplace، Unraid Community Apps، Render Blueprint، Fly.io اور Koyeb۔ مکمل فہرست docs/CHANNELS.md میں موجود ہے۔
Kubernetes کے لیے OpenShift اور OLM کا Operator bundle بھی دستیاب ہے۔
npm i @libredb/studioStudio npm package کے طور پر بھی شائع ہوتا ہے، اس لیے اسے براہِ راست آپ کی application میں embed کیا جا سکتا ہے۔ اگر آپ کا product اپنے users کے لیے databases بناتا ہے تو editor کے لیے یہی سب سے مفید جگہ ہے۔
- Tests کی سات layers: unit، API، integration، hooks، security، evals اور components، اس کے علاوہ end-to-end
- 100% line coverage، اور CI میں یہ سخت شرط ہے۔ coverage کم ہوئی تو merge رک جاتا ہے
- SonarCloud quality gate
- ہر release میں Node 24 اور 26 پر smoke tests
bun run test # all tests
bun run test:e2e # Playwright (requires compiling beforehand)
bun run test:coverage # coverage reportابھی تفصیلی مواد صرف English میں دستیاب ہے:
- Architecture · Database providers · Engine reference
- API documentation · OIDC configuration · Storage layer
- Helm Chart · Distribution channels · Adding a database
Issues اور pull requests خوش آئند ہیں۔ آغاز CONTRIBUTING.md سے کریں۔
Database engine شامل کرنے کے لیے docs/ADDING_A_PROVIDER.md دیکھیں۔ Code، documentation اور tests ایک ہی pull request میں ساتھ چلتے ہیں۔
MIT۔ کوئی CLA نہیں، کوئی enterprise edition نہیں، اور کچھ بھی reserved نہیں۔
ہر اس شخص کے لیے جو data کے ساتھ کام کرتا ہے، data چاہے کہیں بھی رکھا ہو یا کہیں بھی جا رہا ہو۔
