Opened 4 years ago

Last modified 19 months ago

#12030 new enhancement

Create a DatabaseManager for interacting with BridgeDB's database backends

Reported by: isis Owned by: isis
Priority: High Milestone:
Component: Obfuscation/BridgeDB Version:
Severity: Normal Keywords: bridgedb-db, bridgedb-dist, bridgedb-1.0.x, proposal-226, isis2015Q1Q2, isisExB, isisExC, TorCoreTeam201608
Cc: isis, sysrqb Actual Points:
Parent ID: Points:
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 (6)

comment:1 Changed 4 years ago by isis

Description: modified (diff)

comment:2 Changed 4 years ago by isis

Type: defectenhancement

comment:3 Changed 3 years ago by isis

Keywords: isis2015Q1Q2 isisExB isisExC added

comment:4 Changed 3 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 19 months 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 19 months ago by isis (previous) (diff)

comment:6 Changed 19 months ago by isis

Keywords: TorCoreTeam201608 added

Adding to my august tickets.

Note: See TracTickets for help on using tickets.