{"id":3528387,"name":"github.com/nedscode/rwproxy","ecosystem":"go","description":"Package rwproxy provides an implementation of \"database/sql/driver\".Driver, switching between a \"writer\" connection and series of \"reader\" connections of an underlying delegate driver.\n\nTo provide reader-writer query distribution without userland changes in database usage.\n\nrwproxy achieves its goal by being an implementation of database/sql/driver.Driver. It doesn't provide any direct database driver facilities, and instead wraps around a\ndelegate driver which provides the concrete implementation:\n\nThe cluster is specified as a \"compound\" DSN to sql.Open(). The compound DSN is a semicolon-separated (;) list of DSNs for the delegate driver.\nThe first DSN is used as the \"writer\", and any subsequent DSNs as a series of \"readers\" across which queries will be load balanced.\nIf no readers are specified, all queries will be sent to the writer, which should behave identically to not using rwproxy at all.\n\nrwproxy selects the most appropriate connection as follows:\n\nThe rwproxy *sql.Conn lazily connects to the writer and a single reader as necessary, and will retain these until the it is closed by the connection pool.\n\nPackage \"database/sql\" provides a builtin connection pool when sql.Open() is used. Because the pooling happens at a level above (and therefore out of control of) the rwproxy driver,\nit is the rwproxy connections (not the delegated connections) that are pooled. This means that, at worst, rwproxy will hold open both a writer and reader connection for each item\nin the connection pool.","homepage":"https://github.com/nedscode/rwproxy","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/nedscode/rwproxy","keywords_array":[],"namespace":"github.com/nedscode","versions_count":1,"first_release_published_at":"2018-07-11T07:21:01.000Z","latest_release_published_at":"2018-07-11T07:21:01.000Z","latest_release_number":"v0.0.0-20180711072101-c94e8e71be23","last_synced_at":"2026-05-16T17:01:27.527Z","created_at":"2022-04-10T22:56:37.379Z","updated_at":"2026-05-16T17:01:27.528Z","registry_url":"https://pkg.go.dev/github.com/nedscode/rwproxy","install_command":"go get github.com/nedscode/rwproxy","documentation_url":"https://pkg.go.dev/github.com/nedscode/rwproxy#section-documentation","metadata":{},"repo_metadata":{"uuid":"140214850","full_name":"nedscode/rwproxy","owner":"nedscode","description":"A transparent reader-writer query-distributing proxy SQL driver for Go","archived":false,"fork":false,"pushed_at":"2018-07-11T07:21:05.000Z","size":20,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-03-18T04:19:12.422Z","etag":null,"topics":["database","go","golang","master","read","replica","replication","slave","sql","write"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"logo_url":null,"metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-09T01:08:19.000Z","updated_at":"2021-12-14T12:24:34.000Z","dependencies_parsed_at":"2022-08-28T11:51:14.784Z","dependency_job_id":null,"html_url":"https://github.com/nedscode/rwproxy","commit_stats":null,"repository_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedscode%2Frwproxy","tags_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedscode%2Frwproxy/tags","manifests_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedscode%2Frwproxy/manifests","owner_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nedscode","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":108921946,"host_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names"}},"repo_metadata_updated_at":"2023-03-21T18:43:00.503Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.345852080216646,"dependent_packages_count":6.999148183520997,"stargazers_count":null,"forks_count":null,"average":8.172500131868823},"purl":"pkg:golang/github.com/nedscode/rwproxy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/nedscode/rwproxy","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/nedscode/rwproxy","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/nedscode/rwproxy/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2023-08-09T19:04:35.534Z","issues_count":0,"pull_requests_count":4,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":1345.0,"issues_closed_count":0,"pull_requests_closed_count":4,"pull_request_authors_count":1,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":4,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fnedscode%2Frwproxy/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fnedscode%2Frwproxy/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fnedscode%2Frwproxy/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fnedscode%2Frwproxy/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fnedscode%2Frwproxy/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fnedscode%2Frwproxy/codemeta","maintainers":[]}