Create a DatabaseManager for interacting with BridgeDB's database backends
We need a DatabaseManager
which will handle receiving BridgeRequest
s 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 Bridge
s from the DatabaseManager
, and they will expect to receive some relatively well-supported, simple, serialised format (probably JSON) in return.
- 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.
- 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.Bridge
s 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.
Change History (11)
Description: |
modified (diff)
|
Type: |
defect →
enhancement
|
Keywords: |
isis2015Q1Q2 isisExB isisExC added
|
Summary: |
Create a ORM DatabaseManager for interacting with BridgeDB's database backends →
Create a DatabaseManager for interacting with BridgeDB's database backends
|
Keywords: |
TorCoreTeam201608 added
|
Cc: |
isis removed
|
Keywords: |
isis2015Q1Q2 isisExB isisExC TorCoreTeam201608 removed
|
Owner: |
isis deleted
|
Points: |
→ 10
|
Priority: |
High →
Medium
|
Status: |
new →
assigned
|
Keywords: |
ex-sponsor-19 added
|
Keywords: |
ex-sponsor19 added
|
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.