summaryrefslogtreecommitdiff
path: root/doc/overview.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/overview.txt')
-rw-r--r--doc/overview.txt202
1 files changed, 0 insertions, 202 deletions
diff --git a/doc/overview.txt b/doc/overview.txt
deleted file mode 100644
index d63eed91..00000000
--- a/doc/overview.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-#pragma section-numbers 2
-
-= SkyTools =
-
-[[TableOfContents]]
-
-== Intro ==
-
-This is package of tools we use at Skype to manage our cluster of [http://www.postgresql.org PostgreSQL]
-servers. They are put together for our own convinience and also because they build on each other,
-so managing them separately is pain.
-
-The code is hosted at [http://pgfoundry.org PgFoundry] site:
-
- http://pgfoundry.org/projects/skytools/
-
-There are our [http://pgfoundry.org/frs/?group_id=1000206 downloads] and
-[http://lists.pgfoundry.org/mailman/listinfo/skytools-users mailing list].
-Also [http://pgfoundry.org/scm/?group_id=1000206 CVS]
-and [http://pgfoundry.org/tracker/?group_id=1000206 bugtracker].
-
-Combined todo list for all the modules: [http://skytools.projects.postgresql.org/doc/TODO.html TODO.html]
-
-== High-level tools ==
-
-Those are script that are meant for end-user.
-In our case that means database administrators.
-
-=== Londiste ===
-
-Replication engine written in Python. It uses PgQ as transport mechanism.
-Its main goals are robustness and easy usage. Thus its not as complete
-and featureful as Slony-I.
-
-[http://pgsql.tapoueh.org/londiste.html Tutorial] written by Dimitri Fontaine.
-
-Documentation:
-
- * [http://skytools.projects.postgresql.org/doc/londiste.cmdline.html Usage guide]
- * [http://skytools.projects.postgresql.org/doc/londiste.config.html Config file]
- * [http://skytools.projects.postgresql.org/doc/londiste.ref.html Low-level reference]
-
-''' Features '''
-
- * Tables can be added one-by-one into set.
- * Initial COPY for one table does not block event replay for other tables.
- * Can compare tables on both sides.
- * Supports sequences.
- * Easy installation.
-
-''' Missing features '''
-
- * Does not understand cascaded replication, when one subscriber acts
- as provider to another one and it dies, the last one loses sync with the first one.
- In other words - it understands only pair of servers.
-
-''' Sample usage '''
-{{{
-## install pgq on provider:
-$ pgqadm.py provider_ticker.ini install
-
-## run ticker on provider:
-$ pgqadm.py provider_ticker.ini ticker -d
-
-## install Londiste in provider
-$ londiste.py replic.ini provider install
-
-## install Londiste in subscriber
-$ londiste.py replic.ini subscriber install
-
-## start replication daemon
-$ londiste.py replic.ini replay -d
-
-## activate tables on provider
-$ londiste.py replic.ini provider add users orders
-
-## add tables to subscriber
-$ londiste.py replic.ini subscriber add users
-}}}
-
-=== PgQ ===
-
-Generic queue implementation. Based on ideas from [http://www.slony1.info/ Slony-I] -
-snapshot based event batching.
-
-''' Features '''
-
- * Generic multi-consumer, multi-producer queue.
- * There can be several consumers on one queue.
- * It is guaranteed that each of them sees a event at least once.
- But it's not guaranteed that it sees it only once.
- * The goal is to provide a clean API as SQL functions. The frameworks
- on top of that don't need to understand internal details.
-
-''' Technical design '''
-
- * Events are batched using snapshots (like Slony-I).
- * Consumers are poll-only, they don't need to do any administrative work.
- * Queue administration is separate process from consumers.
- * Tolerant of long transactions.
- * Easy to monitor.
-
-''' Docs '''
-
- * [http://skytools.projects.postgresql.org/doc/pgq-sql.html SQL API overview]
- * [http://skytools.projects.postgresql.org/pgq/ SQL API detailed docs]
- * [http://skytools.projects.postgresql.org/doc/pgq-admin.html Administrative tool usage]
-
-=== WalMgr ===
-
-Python script for hot failover. Tries to make setup
-initial copy and later switch easy for admins.
-
- * Docs: [http://skytools.projects.postgresql.org/doc/walmgr.html walmgr.html]
-
-Sample:
-
-{{{
- [ .. prepare config .. ]
-
- master$ walmgr master.ini setup
- master$ walmgr master.ini backup
- slave$ walmgr slave.ini restore
-
- [ .. main server down, switch failover server to normal mode: ]
-
- slave$ walmgr slave.ini boot
-}}}
-
-== Low-level tools ==
-
-Those are building blocks for the PgQ and Londiste.
-Useful for database developers.
-
-=== txid ===
-
- Provides 8-byte transaction id-s for external usage.
-
-=== logtriga ===
-
- Trigger function for table event logging in "partial SQL" format.
- Based on Slony-I logtrigger. Used in londiste for replication.
-
-=== logutriga ===
-
- Trigger function for table event logging in urlencoded format.
- Written in PL/Python. For cases where data manipulation is necessary.
-
-== Developement frameworks ==
-
-=== skytools - Python framework for database scripting ===
-
-This collect various utilities for Python scripts for databases.
-
-''' Topics '''
-
- * Daemonization
- * Logging
- * Configuration.
- * Skeleton class for scripts.
- * Quoting (SQL/COPY)
- * COPY helpers.
- * Database object lookup.
- * Table structure detection.
-
-Documentation: http://skytools.projects.postgresql.org/api/
-
-=== pgq - Python framework for PgQ consumers ===
-
-This builds on scripting framework above.
-
-Docs:
-
- * [http://skytools.projects.postgresql.org/api/ Python API docs]
-
-== Sample scripts ==
-
-Those are specialized script that are based on skytools/pgq framework.
-Can be considered examples, although they are used in production in Skype.
-
-=== Special data moving scripts ===
-
-There are couple of scripts for situations where regular replication
-does not fit. They all operate on `logutriga()` urlencoded queues.
-
- * `cube_dispatcher`: Multi-table partitioning on change date, with optional keep-all-row-versions mode.
- * `table_dispatcher`: configurable partitioning for one table.
- * `bulk_loader`: aggregates changes for slow databases. Instead of each change in separate statement,
- does minimal amount of DELETE-s and then big COPY.
-
-|| Script || Supported operations || Number of tables || Partitioning ||
-|| table_dispatcher || INSERT || 1 || any ||
-|| cube_dispatcher || INSERT/UPDATE || any || change time ||
-|| bulk_loader || INSERT/UPDATE/DELETE || any || none ||
-
-=== queue_mover ===
-
-Simply copies all events from one queue to another.
-
-=== scriptmgr ===
-
-Allows to start and stop several scripts together.