{
"info": {
"author": "Federico Campoli",
"author_email": "the4thdoctor.gallifrey@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: PostgreSQL License",
"Natural Language :: English",
"Operating System :: POSIX :: BSD",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Database :: Database Engines/Servers",
"Topic :: Other/Nonlisted Topic"
],
"description": "repcloud\n------------------------------\nrepcloud is a repacker for postgresql tables. Unlikely pgrepack there's no need for extension or external libraries.\n\nThe procedure can repack the tables using a similar strategy like pgrepack but without the physical file swap.\n\nThis allow the procedure to be executed on environment where is not possible to install external libraries or \nthere is no super user access. (e.g. cloud hosted databases, hence the name) \n\nWhen repacking the process creates a copy of the original table and using a select insert copies the existing data into the new relation.\nA trigger on the original table stores the data changes for which are replayed on the new one before attempting the swap.\n\nAll the existing indices, foreign keys and referencing foreign keys are created before the swap.\nViews and materialised views referencing the repacked table are dropped and created as well.\n\nAcknowledgement\n...................................\nCoding repcloud has been possible thanks to the sponsorhip of `Cleo AI. https://www.meetcleo.com/ `_ \n\n.. image:: https://github.com/the4thdoctor/repcloud/raw/master/images/cleo_logo.png\n :target: https://www.meetcleo.com/\n\nConfiguration \n...................................\n\nThe script which executes the repack is rpcl. At its first execution the it creates a directory in the user's home named .repcloud\nUnder this directory there are three other subfolders.\n\n.repcloud/logs where the procedure's logs are stored \n.repcloud/pid where the procedure's pid file is stored\n.repcloud/config where the configurations are stored.\nIn config is also copied the file config-example.toml which is the template for any other configuration.\n\nthe command line rpcl accepts the following options:\n\n* --config specifies the config file to use in .repcloud/config. if omitted defaults to default.toml\n* --connection specifies which connection to use within the configuration file. if omitted any connection is used for repacking\n* --debug forces the process in foreground with log sent both to file and console\n\nWithout debug and with the log_dest set to file the process starts in background.\n\nrpcl accepts the following commands\n\n* show_connections shows the connections defined within the configuration file\n* create_schema creates the repack helper schemas in the target database\n* drop_schema drops the repack helper schemas from the target database. if any table failed the repack its copy is dropped as well\n* repack_tables repack the tables listed within the connection\n* prepare_repack prepares the tables for the repack. creates the new table, copy the data and builds the indices. then it stops before the swap.\n\nPlease note that prepare_repack requires much more space than repack_tables as all the tables are copied and prepared for the repack instead of repacking and dropping \nthem one by one.\n\n\nIn the configuration file the notifier and notifier.email sections allow to setup an email notification for when the repack or prepare repack is complete.\n\n\nLimitations\n............................\n\nThe procedure needs to be able to drop all the objects involved in the repack. Therefore the login user must be the object's owner or \nshould be able to drop the objects.\n\nThe swap requires an exclusive lock on the old relation for the time necessary to move the new relation into the correct schema and drop the old relation.\nIf an error occur during this phase everything is rolled back. The procedure resumes the replay and will attempt again the swap after a sufficient amount of data has been replayed.\n\nCurrently there is no support for single index repack or tablespace change.\n\nCurrently there is no stop method for the background repack process.\n\nA connection must have the header in the form of [connections.]\n\nEach connection requires the database connection data: user,password,port,host,database,sslmode.\n\nThe lists schemas and tables allow to specify which schema or tables we want to repack. If omitted the repack will process any table within the database.\n\nThe parameter max_replay_rows specifies how many rows should be replayed at once during the replay phase.\nlock_timeout specifies how long the process should wait for acquiring the lock on the table to swap before giving up. If the lock_timeout expires the swap is delayed\nuntil the a sufficient amount of rows are replayed again.\n\ncheck_time specifies the time between two checks for changed data on the repacked table. The value will be matched against the replay speed in order to determine\nif the replay can reach the consistent status with the original table.\nIf it's not possible the swap attempt aborts.\n\nLicense\n------------------------------\nrepcloud is released under the terms of the `PostgreSQL license - https://opensource.org/licenses/postgresql `_ \n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/the4thdoctor/repcloud/",
"keywords": "postgresql database cloud repack transform",
"license": "PostgreSQL License",
"maintainer": "Federico Campoli",
"maintainer_email": "the4thdoctor.gallifrey@gmail.com",
"name": "repcloud",
"package_url": "https://pypi.org/project/repcloud/",
"platform": "linux",
"project_url": "https://pypi.org/project/repcloud/",
"project_urls": {
"Homepage": "https://github.com/the4thdoctor/repcloud/"
},
"release_url": "https://pypi.org/project/repcloud/0.0.1.dev0/",
"requires_dist": [
"argparse (>=1.2.1)",
"psycopg2-binary (>=2.7.4)",
"toml (>=0.10.0)",
"tabulate (>=0.8.1)",
"daemonize (>=2.4.7)",
"sphinx (>=2.1.2)"
],
"requires_python": ">=3.4",
"summary": "PostgreSQL repacker without the need for external extensions. It may work fine with any cloud hosted PostgreSQL database.",
"version": "0.0.1.dev0"
},
"last_serial": 5828789,
"releases": {
"0.0.1.dev0": [
{
"comment_text": "",
"digests": {
"md5": "b8906439c6870f729d2533e3f5e2a14c",
"sha256": "a30313ebe33ec489e3b45169a2b0788c596927a59927b2c0506809c020c0edd9"
},
"downloads": -1,
"filename": "repcloud-0.0.1.dev0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b8906439c6870f729d2533e3f5e2a14c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 25676,
"upload_time": "2019-09-14T07:23:23",
"url": "https://files.pythonhosted.org/packages/99/83/a9cedf3671fe886d18867a4aef82ebedcf8b72afd71c045e664e536b861c/repcloud-0.0.1.dev0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "2fd4948e061ab973b537fa325d72d3a2",
"sha256": "6c6d8c30ae5e893a3075e3fc795a942a81a0c91bf3ee1827a92400a5deb95f79"
},
"downloads": -1,
"filename": "repcloud-0.0.1.dev0.tar.gz",
"has_sig": false,
"md5_digest": "2fd4948e061ab973b537fa325d72d3a2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 33737,
"upload_time": "2019-09-14T07:23:26",
"url": "https://files.pythonhosted.org/packages/2e/17/aa6f597b764b700d115d51d7f88df5f1e3fcd915426d6f5817e783e991b3/repcloud-0.0.1.dev0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "b8906439c6870f729d2533e3f5e2a14c",
"sha256": "a30313ebe33ec489e3b45169a2b0788c596927a59927b2c0506809c020c0edd9"
},
"downloads": -1,
"filename": "repcloud-0.0.1.dev0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b8906439c6870f729d2533e3f5e2a14c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 25676,
"upload_time": "2019-09-14T07:23:23",
"url": "https://files.pythonhosted.org/packages/99/83/a9cedf3671fe886d18867a4aef82ebedcf8b72afd71c045e664e536b861c/repcloud-0.0.1.dev0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "2fd4948e061ab973b537fa325d72d3a2",
"sha256": "6c6d8c30ae5e893a3075e3fc795a942a81a0c91bf3ee1827a92400a5deb95f79"
},
"downloads": -1,
"filename": "repcloud-0.0.1.dev0.tar.gz",
"has_sig": false,
"md5_digest": "2fd4948e061ab973b537fa325d72d3a2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 33737,
"upload_time": "2019-09-14T07:23:26",
"url": "https://files.pythonhosted.org/packages/2e/17/aa6f597b764b700d115d51d7f88df5f1e3fcd915426d6f5817e783e991b3/repcloud-0.0.1.dev0.tar.gz"
}
]
}