Opened 5 years ago

Last modified 11 days ago

#12030 assigned enhancement

Create a DatabaseManager for interacting with BridgeDB's database backends

Reported by: isis Owned by:
Priority: Medium Milestone:
Component: Circumvention/BridgeDB Version:
Severity: Normal Keywords: bridgedb-db, bridgedb-dist, bridgedb-1.0.x, proposal-226, ex-sponsor-19, ex-sponsor19
Cc: sysrqb Actual Points:
Parent ID: Points: 13
Reviewer: Sponsor:

Description (last modified by isis)

We need a DatabaseManager which will handle receiving BridgeRequests from BridgeDB's distributors, and will queue these requests as transactions with the backend databases.

The distributors are going to use a common method (just call it getBridgesFromDBManager() for now) to request Bridges from the DatabaseManager, and they will expect to receive some relatively well-supported, simple, serialised format (probably JSON) in return.

  1. The Easy Way The easier way to do this would be to not really actually truly make a for-reals ORM, and simply expect to be interacting with a NOSQLly CouchDB backend as described in proposal #226. CouchDB documents are JSON anyway, so this is super easy. If we go this route, we'll need some code to convert the old SQLly stuff to the new NOSQLly format.
  1. The Masochistic Way The harder, but possibly better in the long run (should we ever decide to stop using NOSQL/OODBMSs), way to do this would be to write a true ORM/RDBMS which can work with either system.

This databases which this system will interact with will be used for storing complex/referential/self-referential/recursive datatypes, such as bridgedb.Bridges.Bridges and structures for storing data about blocking events for bridges (including timestamps, discovery method, and country code of the block, etc.) as defined in Section 1.b. of proposal #226.

Child Tickets

Change History (11)

comment:1 Changed 5 years ago by isis

Description: modified (diff)

comment:2 Changed 5 years ago by isis

Type: defectenhancement

comment:3 Changed 4 years ago by isis

Keywords: isis2015Q1Q2 isisExB isisExC added

comment:4 Changed 4 years ago by isis

Summary: Create a ORM DatabaseManager for interacting with BridgeDB's database backendsCreate a DatabaseManager for interacting with BridgeDB's database backends

comment:5 Changed 3 years ago by isis

Severity: Normal

I've been working on this over the past few weeks. A prototype of this work is available in my feature/12030-database-manager branch, however it is not yet ready for merge.

Last edited 3 years ago by isis (previous) (diff)

comment:6 Changed 3 years ago by isis

Keywords: TorCoreTeam201608 added

Adding to my august tickets.

comment:7 in reply to:  6 Changed 12 months ago by MikiMix

Replying to isis:

Adding to my august tickets.

comment:8 Changed 5 months ago by gaba

Cc: isis removed
Keywords: isis2015Q1Q2 isisExB isisExC TorCoreTeam201608 removed
Owner: isis deleted
Points: 10
Priority: HighMedium
Sponsor: Sponsor19
Status: newassigned

comment:9 Changed 5 months ago by gaba

Points: 1013

comment:10 Changed 12 days ago by gaba

Keywords: ex-sponsor-19 added

Adding the keyword to mark everything that didn't fit into the time for sponsor 19.

comment:11 Changed 11 days ago by gaba

Keywords: ex-sponsor19 added
Sponsor: Sponsor19

Remove sponsor 19 and add a keyword ex-sponsor19 to mark all the tickets that could have been in the scope of the sponsor.

Note: See TracTickets for help on using tickets.