Ahead of deploying ipoid, we should make sure that the DBA team are happy with the database schema.
The current schema is:
MariaDB [ipoid]> DESCRIBE actor_data; DESCRIBE actor_data_behaviors; DESCRIBE actor_data_proxies; DESCRIBE actor_data_tunnels; DESCRIBE behaviors; DESCRIBE proxies; DESCRIBE tunnels; +------------------+-------------------------------------------------------------------------------------------+------+-----+------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+-------------------------------------------------------------------------------------------+------+-----+------------------+----------------+ | pkid | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | ip | varbinary(128) | NO | UNI | NULL | | | org | varbinary(1280) | YES | | NULL | | | client_count | int(10) unsigned | YES | | NULL | | | types | set('UNKNOWN','DESKTOP','HEADLESS','IOT','MOBILE') | YES | | NULL | | | conc_city | varbinary(128) | YES | | NULL | | | conc_state | varbinary(128) | YES | | NULL | | | conc_country | varbinary(32) | YES | | NULL | | | countries | int(11) | YES | | NULL | | | location_country | varbinary(32) | YES | | NULL | | | risks | set('UNKNOWN','CALLBACK_PROXY','GEO_MISMATCH','LOGIN_BRUTEFORCE','TUNNEL','WEB_SCRAPING') | YES | | NULL | | | last_updated | int(11) | YES | | unix_timestamp() | | +------------------+-------------------------------------------------------------------------------------------+------+-----+------------------+----------------+ 12 rows in set (0.002 sec) +---------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------------+------+-----+---------+-------+ | actor_data_id | bigint(20) unsigned | NO | | NULL | | | behavior_id | bigint(20) unsigned | NO | | NULL | | +---------------+---------------------+------+-----+---------+-------+ 2 rows in set (0.001 sec) +---------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------------+------+-----+---------+-------+ | actor_data_id | bigint(20) unsigned | NO | | NULL | | | proxy_id | bigint(20) unsigned | NO | | NULL | | +---------------+---------------------+------+-----+---------+-------+ 2 rows in set (0.001 sec) +---------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------------+------+-----+---------+-------+ | actor_data_id | bigint(20) unsigned | NO | | NULL | | | tunnel_id | bigint(20) unsigned | NO | | NULL | | +---------------+---------------------+------+-----+---------+-------+ 2 rows in set (0.001 sec) +----------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------------+------+-----+---------+----------------+ | pkid | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | behavior | varbinary(64) | YES | UNI | NULL | | +----------+---------------------+------+-----+---------+----------------+ 2 rows in set (0.001 sec) +-------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------------+------+-----+---------+----------------+ | pkid | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | proxy | varbinary(128) | YES | UNI | NULL | | +-------+---------------------+------+-----+---------+----------------+ 2 rows in set (0.001 sec) +-----------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------------+------+-----+---------+----------------+ | pkid | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | operator | varbinary(256) | YES | UNI | NULL | | | type | varbinary(5) | YES | | NULL | | | anonymous | tinyint(1) | YES | | NULL | | +-----------+---------------------+------+-----+---------+----------------+ 4 rows in set (0.001 sec)
Typical INSERT query:
INSERT INTO actor_data (ip,org,client_count,types,conc_city,conc_state,conc_country,countries,location_country,risks) VALUES (?,?,?,?,?,?,?,?,?,?); INSERT INTO actor_data_proxies (actor_data_id, proxy_id) VALUES( (SELECT pkid FROM actor_data WHERE ip = ?), (SELECT pkid FROM proxies WHERE proxy = ?) );
Typical SELECT query:
SELECT * FROM actor_data WHERE ip = ? LIMIT 1; SELECT * FROM actor_data_proxies WHERE actor_data_id IN (?);