Opened 5 years ago

Last modified 4 months 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
Cc: sysrqb Actual Points:
Parent ID: Points: 13
Reviewer: Sponsor: Sponsor19

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 (9)

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/12310-database-manager branch, however it is not yet ready for merge.

Version 0, edited 3 years ago by isis (next)

comment:6 Changed 3 years ago by isis

Keywords: TorCoreTeam201608 added

Adding to my august tickets.

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

Replying to isis:

Adding to my august tickets.

comment:8 Changed 4 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 4 months ago by gaba

Points: 1013
Note: See TracTickets for help on using tickets.