Palekana a me DBMS: he aha kāu e hoʻomanaʻo ai i ke koho ʻana i nā mea hana palekana

Palekana a me DBMS: he aha kāu e hoʻomanaʻo ai i ke koho ʻana i nā mea hana palekana

ʻO Denis Rozhkov koʻu inoa, ʻo wau ke poʻo o ka hoʻomohala polokalamu ma ka hui Gazinformservice, i ka hui huahana Iatoba. Ke kau nei nā kānāwai a me nā hoʻoponopono hui i kekahi mau koi no ka palekana o ka mālama ʻikepili. ʻAʻohe mea makemake e loaʻa i nā ʻaoʻao ʻekolu ke komo i ka ʻike huna, no laila he mea nui kēia mau pilikia no kēlā me kēia papahana: ka ʻike a me ka hōʻoia ʻana, ka mālama ʻana i ka ʻikepili, ka hōʻoia ʻana i ka pono o ka ʻike i loko o ka ʻōnaehana, ka hoʻopaʻa ʻana i nā hanana palekana. No laila, makemake wau e kamaʻilio e pili ana i kekahi mau mea hoihoi e pili ana i ka palekana DBMS.

Ua hoʻomākaukau ʻia ka ʻatikala ma muli o kahi haʻiʻōlelo ma @DatabasesMeetup, hoʻonohonoho ʻia Mail.ru Cloud Solutions. Inā ʻaʻole ʻoe makemake e heluhelu, hiki iā ʻoe ke nānā:


ʻEkolu mau ʻāpana o ka ʻatikala:

  • Pehea e hoʻopaʻa ai i nā pilina.
  • He aha nā hana loiloi a pehea e hoʻopaʻa ai i nā mea e hana nei ma ka ʻaoʻao waihona a me ka hoʻopili ʻana iā ia.
  • Pehea e pale ai i ka ʻikepili i loko o ka waihona ponoʻī a me nā ʻenehana i loaʻa no kēia.

Palekana a me DBMS: he aha kāu e hoʻomanaʻo ai i ke koho ʻana i nā mea hana palekana
ʻEkolu mau ʻāpana o ka palekana DBMS: ka pale pili, ka loiloi hana a me ka pale ʻikepili

Hoʻopaʻa i kāu mau pilina

Hiki iā ʻoe ke hoʻohui i ka waihona ma ke ʻano pololei a i ʻole ma o nā noi pūnaewele. Ma keʻano he kūlana,ʻo ka mea hoʻohanaʻoihana,ʻo ia hoʻi, ka mea hana me ka DBMS, e launa pū me ia me kaʻole.

Ma mua o ka kamaʻilio ʻana e pili ana i ka pale ʻana i nā pilina, pono ʻoe e pane i nā nīnau koʻikoʻi e hoʻoholo ai pehea e hoʻonohonoho ʻia ai nā ana palekana:

  • Ua like anei kekahi mea hoʻohana pāʻoihana me hoʻokahi mea hoʻohana DBMS?
  • inā hāʻawi ʻia ka ʻike i ka ʻikepili DBMS ma o kahi API āu e hoʻomalu ai, a i ʻole ke komo pololei ʻia nā papa;
  • inā hoʻokaʻawale ʻia ka DBMS i kahi ʻāpana pale ʻokoʻa, nāna e launa pū me ia a pehea;
  • inā hoʻohana ʻia ka pooling/proxy a me nā papa waena, hiki ke hoʻololi i ka ʻike e pili ana i ke kūkulu ʻia ʻana o ka pilina a me ka mea e hoʻohana nei i ka waihona.

I kēia manawa e ʻike kākou i nā mea hana e hoʻohana ai no ka hoʻopaʻa ʻana i nā pilina:

  1. E hoʻohana i nā hāʻina papa ahi waihona waihona. ʻO kahi papa pale hou, ma ka liʻiliʻi, e hoʻonui i ka ʻike o ka mea e hana nei i ka DBMS, a ma ka palena nui, hiki iā ʻoe ke hāʻawi i ka pale ʻikepili hou.
  2. E hoʻohana i nā kulekele password. ʻO kā lākou hoʻohana ʻana ma muli o ke ʻano o ke kūkulu ʻia ʻana o kāu hoʻolālā. I kekahi hihia, ʻaʻole lawa ka ʻōlelo huna hoʻokahi i ka faila hoʻonohonoho o kahi noi pūnaewele e pili ana i ka DBMS no ka pale. Aia kekahi mau mea hana DBMS e ʻae iā ʻoe e hoʻomalu i ka mea hoʻohana a me ka ʻōlelo huna e pono ai e hoʻonui.

    Hiki iā ʻoe ke heluhelu hou aʻe e pili ana i nā hana helu mea hoʻohana maanei, hiki iā ʻoe ke ʻike e pili ana i MS SQL Vulnerability Assessmen maanei

  3. Hoʻonui i ka pōʻaiapili o ke kau me ka ʻike e pono ai. Inā he opaque ka hālāwai, ʻaʻole maopopo ʻoe i ka mea e hana nei i ka DBMS i loko o kāna ʻano, hiki iā ʻoe, i loko o ke ʻano o ka hana e hana ʻia, hoʻohui i ka ʻike e pili ana i ka mea e hana nei a me ke kumu. Hiki ke ʻike ʻia kēia ʻike ma ka loiloi.
  4. E hoʻonohonoho i ka SSL inā ʻaʻohe ʻokoʻa kaʻawale ma waena o ka DBMS a me nā mea hoʻohana hope; ʻaʻole ia ma kahi VLAN kaʻawale. I kēlā mau hihia, pono e pale i ke kahawai ma waena o ka mea kūʻai aku a me ka DBMS ponoʻī. Loaʻa nā mea hana palekana ma ka open source.

Pehea e pili ai kēia i ka hana o ka DBMS?

E nānā i ka laʻana o PostgreSQL e ʻike i ka hopena o SSL i ka ukana CPU, hoʻonui i nā manawa a hoʻemi i ka TPS, a inā paha e hoʻopau i nā kumuwaiwai he nui inā hiki iā ʻoe.

ʻO ka hoʻouka ʻana iā PostgreSQL me ka pgbench he polokalamu maʻalahi no ka holo ʻana i nā hoʻokolohua hana. Hoʻokō pinepine ʻo ia i hoʻokahi kaʻina o nā kauoha, i loko paha o nā kau ʻikepili like ʻole, a laila helu i ka awelika o ka uku kālepa.

E ho'āʻo i ka 1 me kaʻole SSL a me ka hoʻohanaʻana i SSL - ua hoʻokumu ʻia ka pilina no kēlā me kēia hana:

pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require 
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"

vs

pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"

E ho'āʻo i ka 2 me kaʻole SSL a me ka hoʻohanaʻana i SSL - hana ʻia nā hana a pau i hoʻokahi pilina:

pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"

vs

pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"

Nā hoʻonohonoho ʻē aʻe:

scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 5000
number of transactions actually processed: 50000/50000

Nā hopena hōʻike:

 
NO SSL
SSL

Hoʻokumu ʻia kahi pilina no kēlā me kēia hana

awelika latency
171.915 ms
187.695 ms

tps me ka hookumu ana
58.168112
53.278062

tps kaawale na pili e kukulu ana
64.084546
58.725846

CPU
24%
28%

Hana ʻia nā hana a pau ma kahi pilina

awelika latency
6.722 ms
6.342 ms

tps me ka hoʻokumu ʻana i nā pilina
1587.657278
1576.792883

tps kaawale na pili e kukulu ana
1588.380574
1577.694766

CPU
17%
21%

Ma nā haʻahaʻa māmā, ua like ka mana o SSL me ka hewa ana. Inā nui loa ka nui o ka ʻikepili i hoʻoili ʻia, ʻokoʻa paha ke kūlana. Inā mākou e hoʻokumu i hoʻokahi pili i kēlā me kēia kālepa (he mea kakaʻikahi kēia, ʻo ka maʻamau ka hui ʻana o ka pilina ma waena o nā mea hoʻohana), loaʻa iā ʻoe ka helu nui o nā pilina / wehe ʻana, ʻoi aku ka nui o ka hopena. ʻO ia hoʻi, aia paha nā pilikia o ka emi ʻana o ka hana, akā naʻe, ʻaʻole nui ka ʻokoʻa i ka hoʻohana ʻole ʻana i ka pale.

E ʻoluʻolu, aia kahi ʻokoʻa ikaika inā hoʻohālikelike ʻoe i nā ʻano hana: ke hana nei ʻoe i loko o ke kau like a i ʻole nā ​​​​mea like ʻole. Hiki ke hoʻomaopopo ʻia kēia: hoʻohana ʻia nā kumuwaiwai no ka hana ʻana i kēlā me kēia pilina.

Loaʻa iā mākou kahi hihia i ka wā i hoʻopili ai mākou iā Zabbix i ke ʻano hilinaʻi, ʻo ia hoʻi, ʻaʻole i nānā ʻia ka md5, ʻaʻohe pono no ka hōʻoia. A laila ua noi ka mea kūʻai aku e hiki i ke ʻano hōʻoia md5. Hoʻokomo kēia i ka ukana kaumaha ma ka CPU, a hāʻule ka hana. Ua hoʻomaka mākou e ʻimi i nā ala e hoʻonui ai. ʻO kekahi o nā mea e hiki ai ke hoʻoponopono i ka pilikia, ʻo ia ka hoʻokō ʻana i nā palena pūnaewele, e hoʻokaʻawale i nā VLAN no ka DBMS, e hoʻohui i nā hoʻonohonoho e hoʻomaopopo i ka mea e hoʻopili ana mai kahi a wehe i ka hōʻoia. ma ka laulā, pili ka hoʻohana ʻana i nā ʻano hana like ʻole i ka hana a pono e noʻonoʻo i kēia mau mea i ka wā e hoʻolālā ai i ka mana helu o nā kikowaena (mea paʻahana) no ka DBMS.

Ka hopena: i ka nui o nā hoʻonā, hiki i nā nuances liʻiliʻi i ka hōʻoia ke hoʻopilikia nui i ka papahana a maikaʻi ʻole ke ʻike ʻia kēia wale nō ke hoʻokō ʻia i ka hana.

Hooia hana

ʻAʻole ʻo DBMS wale nō ka loiloi. ʻO ka loiloi e pili ana i ka loaʻa ʻana o ka ʻike e pili ana i nā mea e hana nei ma nā ʻāpana like ʻole. Hiki paha kēia i kahi pā ahi waihona a i ʻole ka ʻōnaehana hana i kūkulu ʻia ai ka DBMS.

Ma nā ʻoihana ʻoihana ʻoihana ʻo DBMS maikaʻi nā mea āpau me ka loiloi, akā ma ke kumu ākea - ʻaʻole mau. Eia ka mea a PostgreSQL:

  • log paʻamau - hoʻopaʻa inoa i kūkulu ʻia;
  • extensions: pgaudit - inā ʻaʻole lawa ka hoʻopaʻa inoa paʻamau iā ʻoe, hiki iā ʻoe ke hoʻohana i nā hoʻonohonoho ʻokoʻa e hoʻoponopono i kekahi o nā pilikia.

Hoʻohui i ka hōʻike ma ke wikiō:

"Hiki ke hāʻawi ʻia ka logging ʻōlelo maʻamau e kahi keʻena logging maʻamau me ka log_statement = āpau.

ʻAe ʻia kēia no ka nānā ʻana a me nā hoʻohana ʻē aʻe, akā ʻaʻole ia e hāʻawi i ka pae o nā kikoʻī maʻamau i koi ʻia no ka loiloi.

ʻAʻole lawa ka loaʻa ʻana o kahi papa inoa o nā hana āpau i hana ʻia ma ka waihona.

Hiki ke loaʻa nā ʻōlelo kikoʻī e pili ana i ka loiloi.

Hōʻike ka logging maʻamau i ka mea i noi ʻia e ka mea hoʻohana, ʻoiai ʻo pgAudit e kālele ana i nā kikoʻī o ka mea i hana ʻia i ka wā i hoʻokō ai ka waihona i ka nīnau.

No ka laʻana, makemake paha ka mea hoʻoponopono e hōʻoia ua hana ʻia kahi papa ʻaina i loko o ka puka makani mālama palapala.

He hana maʻalahi paha kēia me ka loiloi kumu a me ka grep, akā pehea inā e hōʻike ʻia ʻoe me kahi mea e like me kēia (me ka manaʻo hoʻohālikelike):

HANA$$
BEGIN
E hoʻokō 'KREATE PALAPALA import' || 'ant_table(id int)';
HOPE$$;

Hāʻawi ka logging maʻamau iā ʻoe i kēia:

LOG: ʻōlelo: DO $$
BEGIN
E hoʻokō 'KREATE PALAPALA import' || 'ant_table(id int)';
HOPE$$;

Me he mea lā e pono ai ka ʻike ʻana i ka papaʻaina hoihoi i kekahi ʻike code i nā hihia i hana ʻia nā papa me ka ikaika.

ʻAʻole kūpono kēia, no ka mea, ʻoi aku ka maikaʻi o ka ʻimi wale ʻana ma ka inoa papa.

ʻO kēia kahi e hiki mai ai ka pgAudit.

No ka hoʻokomo like, e hoʻopuka i kēia puka i loko o ka log:

AUDIT: SESION,33,1,FUNCTION,DO,,,"DO $$
BEGIN
E hoʻokō 'KREATE PALAPALA import' || 'ant_table(id int)';
HOPE$$;"
AUDIT: SESSION,33,2,DDL,HULU PAPA, PAPA,Public.important_table,CREATE TABLE important_table (id INT)

ʻAʻole wale ka poloka DO i hoʻopaʻa ʻia, akā ʻo ka kikokikona piha o ka CREATE TABLE me ke ʻano ʻōlelo, ke ʻano mea, a me ka inoa piha, e maʻalahi ai ka huli ʻana.

Ke hoʻopaʻa inoa nei i nā ʻōlelo SELECT a me DML, hiki ke hoʻonohonoho ʻia ka pgAudit e hoʻopaʻa i kahi komo ʻokoʻa no kēlā me kēia pilina i kuhikuhi ʻia ma ka ʻōlelo.

ʻAʻole koi ʻia ka parsing e ʻike i nā ʻōlelo āpau e pili ana i kahi papa ʻaina (*) ».

Pehea e pili ai kēia i ka hana o ka DBMS?

E holo kāua i nā hoʻokolohua me ka hoʻoponopono piha ʻana a ʻike i ka hopena o ka hana PostgreSQL. E ʻae kākou i ka hoʻopaʻa inoa ʻikepili kiʻekiʻe loa no nā ʻāpana āpau.

ʻAʻole mākou e hoʻololi i ka faila hoʻonohonoho, ʻo ka mea nui e hoʻohuli i ka mode debug5 e kiʻi i ka ʻike kiʻekiʻe.

postgresql.conf

log_destination = 'stderr'
logging_collector = ma
log_truncate_on_rotation = ma
log_rotation_makahiki = 1d
log_rotation_size = 10MB
log_min_messages = debug5
log_min_error_statement = debug5
log_min_duration_statement = 0
debug_print_parse = ma
debug_print_rewritten = ma
debug_print_plan = ma
debug_pretty_print = ma
log_checkpoints = ma
log_connections = ma
log_disconnections = ma
log_duration = ma
log_hostname = ma
log_lock_kali = ma
log_replication_commands = ma
log_temp_files = 0
log_timezone = 'Europa/Moscow'

Ma kahi PostgreSQL DBMS me nā ʻāpana o 1 CPU, 2,8 GHz, 2 GB RAM, 40 GB HDD, hana mākou i ʻekolu mau hoʻāʻo ukana me ka hoʻohana ʻana i nā kauoha:

$ pgbench -p 3389 -U postgres -i -s 150 benchmark
$ pgbench -p 3389 -U postgres -c 50 -j 2 -P 60 -T 600 benchmark
$ pgbench -p 3389 -U postgres -c 150 -j 2 -P 60 -T 600 benchmark

Nā hopena hoʻāʻo:

ʻAʻohe logging
Me ka logging

Huina manawa hoopiha waihona
Kōkuʻu 43,74
Kōkuʻu 53,23

Nā RAM
24%
40%

CPU
72%
91%

Hoʻāʻo 1 (50 mau pilina)

Ka helu o nā hana i 10 mau minuke
74169
32445

Nā ʻoihana/sec
123
54

Latency maʻamau
405 ms
925 ms

Hoʻāʻo 2 (150 mau pilina me 100 hiki)

Ka helu o nā hana i 10 mau minuke
81727
31429

Nā ʻoihana/sec
136
52

Latency maʻamau
550 ms
1432 ms

E pili ana i nā nui

Nui DB
2251 MB
2262 MB

Nui mooolelo waihona
0 MB
4587 MB

Ke laina lalo: ʻaʻole maikaʻi loa ka loiloi piha. E like ka nui o ka ʻikepili mai ka loiloi e like me ka ʻikepili i loko o ka waihona ponoʻī, a ʻoi aku paha. ʻO ka nui o ka logging i hana ʻia i ka hana ʻana me kahi DBMS he pilikia maʻamau i ka hana.

E nānā kākou i nā ʻāpana ʻē aʻe:

  • ʻAʻole loli nui ka wikiwiki: me ka ʻole o ka hoʻopaʻa inoa - 43,74 kekona, me ka logging - 53,23 kekona.
  • E pilikia ana ka RAM a me ka CPU, no ka mea, pono ʻoe e hana i kahi faila loiloi. ʻIke ʻia kēia ma ka hana.

Ke piʻi aʻe ka helu o nā pili, ma ke ʻano maoli, e emi iki ka hana.

I nā hui me ka loiloi ʻoi aku ka paʻakikī:

  • nui ka ʻikepili;
  • ʻAʻole pono ka loiloi ma o ka syslog ma SIEM wale nō, akā i loko o nā faila: inā loaʻa kekahi mea i ka syslog, pono e loaʻa kahi faila kokoke i ka waihona kahi i mālama ʻia ai ka ʻikepili;
  • no ka hoʻopaʻa ʻana, pono ʻia kahi papa ʻokoʻa i ʻole e pau i nā disks I/O, no ka mea, lawe nui ia i kahi;
  • Pono nā limahana palekana ʻike i nā kūlana GOST ma nā wahi āpau, koi lākou i ka ʻike mokuʻāina.

Kaohi ana i ke komo i ka ikepili

E nānā kākou i nā ʻenehana i hoʻohana ʻia no ka pale ʻana i ka ʻikepili a loaʻa iā ia ma nā DBMS pāʻoihana a me ka open source.

He aha kāu e hoʻohana ai:

  1. Hoʻopili a hoʻopaʻa ʻia o nā kaʻina hana a me nā hana (Wrapping) - ʻo ia hoʻi, nā mea hana a me nā pono hana i hiki ʻole ke heluhelu ʻia nā code hiki ke heluhelu ʻia. ʻOiaʻiʻo, ʻaʻole hiki ke hoʻololi a hoʻihoʻi hou ʻia. Pono kēia ala i kekahi manawa ma ka ʻaoʻao DBMS - ua hoʻopili pololei ʻia ka manaʻo o ka palena o ka laikini a i ʻole ka mana ʻae ʻia ma ke kaʻina hana a me ka pae hana.
  2. ʻO ka hoʻopaʻa ʻana i ka ʻike ʻike o ka ʻikepili e nā lālani (RLS) ke ʻike ʻia nā mea hoʻohana ʻokoʻa i hoʻokahi papaʻaina, akā he ʻano hana ʻokoʻa o nā lālani i loko, ʻo ia hoʻi, ʻaʻole hiki ke hōʻike ʻia kekahi mea i kekahi ma ka pae lālani.
  3. ʻO ka hoʻoponopono ʻana i ka ʻikepili i hōʻike ʻia (Masking) ʻo ia ka manawa e ʻike ai nā mea hoʻohana i hoʻokahi kolamu o ka pākaukau i nā ʻikepili a i ʻole nā ​​asterisk wale nō, ʻo ia hoʻi, no kekahi mau mea hoʻohana e pani ʻia ka ʻike. Hoʻoholo ka ʻenehana i ka mea hoʻohana i hōʻike ʻia ma muli o ko lākou pae komo.
  4. ʻO ka palekana DBA/Application DBA/DBA access control, akā, e pili ana i ke kaohi ʻana i ke komo ʻana i ka DBMS ponoʻī, ʻo ia hoʻi, hiki ke hoʻokaʻawale ʻia nā limahana palekana ʻike mai nā luna hoʻomalu waihona a me nā luna noi. He liʻiliʻi nā ʻenehana like i ka open source, akā nui ka nui o lākou i nā DBMS kalepa. Pono lākou inā nui nā mea hoʻohana me ke komo ʻana i nā kikowaena iā lākou iho.
  5. Kaohi ʻana i ke komo ʻana i nā faila ma ka pae ʻōnaehana waihona. Hiki iā ʻoe ke hāʻawi i nā kuleana a me ke komo ʻana i nā pono i nā papa kuhikuhi i hiki i kēlā me kēia luna ke komo wale i ka ʻikepili kūpono.
  6. Ke komo pono a me ka hoʻomaʻemaʻe hoʻomanaʻo - ʻaʻole hoʻohana ʻia kēia mau ʻenehana.
  7. ʻO ka hoʻopiʻi hope-a-hope pololei mai ka DBMS ʻo ia ka hoʻopunipuni ʻaoʻao o ka mea kūʻai aku me ka hoʻokele kī ma ka ʻaoʻao kikowaena.
  8. Hoʻopili ʻikepili. No ka laʻana, ʻo ka hoʻopili kolamu ke hoʻohana ʻoe i kahi mīkini e hoʻopili ai i kahi kolamu hoʻokahi o ka waihona.

Pehea e pili ai kēia i ka hana o ka DBMS?

E nānā kākou i ka laʻana o ka hoʻopunipuni columnar ma PostgreSQL. Aia kahi module pgcrypto, hiki iā ʻoe ke mālama i nā māla i koho ʻia ma ke ʻano i hoʻopili ʻia. Pono kēia inā waiwai kekahi mau ʻikepili. No ka heluhelu ʻana i nā kahua i hoʻopili ʻia, hoʻouna ka mea kūʻai aku i kahi kī decryption, hoʻokaʻawale ke kikowaena i ka ʻikepili a hoʻihoʻi i ka mea kūʻai. Me ka ʻole o ke kī, ʻaʻohe mea hiki ke hana i kāu ʻikepili.

E hoʻāʻo me pgcrypto. E hana mākou i papa me ka ʻikepili i hoʻopili ʻia a me ka ʻikepili maʻamau. Aia ma lalo nā kauoha no ka hana ʻana i nā papa, ma ka laina mua loa he kauoha pono - e hana ana i ka hoʻonui iā ia iho me ka hoʻopaʻa inoa DBMS:

CREATE EXTENSION pgcrypto;
CREATE TABLE t1 (id integer, text1 text, text2 text);
CREATE TABLE t2 (id integer, text1 bytea, text2 bytea);
INSERT INTO t1 (id, text1, text2)
VALUES (generate_series(1,10000000), generate_series(1,10000000)::text, generate_series(1,10000000)::text);
INSERT INTO t2 (id, text1, text2) VALUES (
generate_series(1,10000000),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'));

A laila, e hoʻāʻo kākou e hana i kahi laʻana ʻikepili mai kēlā me kēia pākaukau a nānā i nā manawa hoʻokō.

Ke koho ʻana mai kahi pākaukau me ka hana hoʻopunipuni:

psql -c "timing" -c "select * from t1 limit 1000;" "host=192.168.220.129 dbname=taskdb
user=postgres sslmode=disable" > 1.txt

Aia ka wati.

  id | kikokikona1 | kikokiko2
——+——-+——-
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
...
997 | 997 | 997
998 | 998 | 998
999 | 999 | 999
1000 | 1000 | 1000
(1000 laina)

Manawa: 1,386 ms

Koho ʻia mai kahi papa me ka hana hoʻopunipuni:

psql -c "timing" -c "select id, decrypt(text1, 'key'::bytea, 'bf'),
decrypt(text2, 'key'::bytea, 'bf') from t2 limit 1000;"
"host=192.168.220.129 dbname=taskdb user=postgres sslmode=disable" > 2.txt

Aia ka wati.

  id | decrypt | decrypt
——+—————+————
1 | x31 | x31
2 | x32 | x32
3 | x33 | x33
...
999 | x393939 | x393939
1000 | x31303030 | x31303030
(1000 laina)

Manawa: 50,203 ms

Nā hopena hōʻike:

 
ʻAʻohe hoʻopunipuni
Pgcrypto (decrypt)

Hoʻohālike 1000 lālani
1,386 ms
50,203 ms

CPU
15%
35%

Nā RAM
 
+ 5%

He hopena nui ka hoʻopunipuni i ka hana. Hiki ke ʻike ʻia ua hoʻonui ʻia ka manawa, no ka mea, ʻo nā hana decryption o ka ʻikepili i hoʻopili ʻia (a ʻo ka decryption ka mea maʻamau i kāʻei ʻia i kāu loiloi) pono nā kumuwaiwai nui. ʻO ia hoʻi, ʻo ka manaʻo o ka hoʻopili ʻana i nā kolamu āpau i loaʻa kekahi mau ʻikepili i piha me ka emi ʻana o ka hana.

Eia naʻe, ʻaʻole ʻo ka encryption kahi pōkā kālā e hoʻonā i nā pilikia āpau. ʻO ka ʻikepili i hoʻokaʻawale ʻia a me ke kī decryption i ka wā o ke kaʻina o ka decrypting a me ka lawe ʻana i ka ʻikepili aia ma ka kikowaena. No laila, hiki ke hoʻopaʻa ʻia nā kī e kekahi mea i loaʻa piha i ka kikowaena waihona, e like me ka luna hoʻonohonoho.

Ke loaʻa hoʻokahi kī no ke kolamu holoʻokoʻa no nā mea hoʻohana a pau (ʻoiai inā ʻaʻole no nā mea āpau, akā no nā mea kūʻai aku o kahi hoʻonohonoho palena), ʻaʻole maikaʻi a pololei kēia. ʻO ia ke kumu i hoʻomaka ai lākou e hana i ka hoʻopili ʻana i ka hopena, ma ka DBMS ua hoʻomaka lākou e noʻonoʻo i nā koho no ka hoʻopili ʻana i ka ʻikepili ma ka ʻaoʻao o ka mea kūʻai aku a me ka ʻaoʻao kikowaena, a ʻike ʻia kēlā mau waihona kī-vault like - nā huahana ʻokoʻa e hāʻawi i ka hoʻokele kī ma ka DBMS aoao.

Palekana a me DBMS: he aha kāu e hoʻomanaʻo ai i ke koho ʻana i nā mea hana palekana
ʻO kahi laʻana o ia hoʻopunipuni ma MongoDB

ʻO nā hiʻohiʻona palekana i ka DBMS pāʻoihana a wehe ʻia

Nā hana
ʻAno
Kulekele ʻōlelo huna
hooia
Ka pale ʻana i ke code kumu o nā kaʻina hana a me nā hana
RLS
AES

kahi e'ōlelo ai
kālepa
+
+
+
+
+

ʻO MSSql
kālepa
+
+
+
+
+

Iatoba
kālepa
+
+
+
+
hoʻopaneʻei ka palena manawa

PostgreSQL
Free
hoʻopaneʻei ka palena manawa
hoʻopaneʻei ka palena manawa
-
+
hoʻopaneʻei ka palena manawa

MongoDb
Free
-
+
-
-
Loaʻa ma MongoDB Enterprise wale nō

ʻAʻole lōʻihi ka papaʻaina, akā ʻo ke kūlana kēia: i nā huahana pāʻoihana, ua hoʻopau ʻia nā pilikia palekana no ka manawa lōʻihi, ma ke kumu ākea, ma ke ʻano he kānāwai, hoʻohana ʻia kekahi ʻano mea hoʻohui no ka palekana, ua nalowale nā ​​hana he nui. , i kekahi manawa pono ʻoe e hoʻohui i kekahi mea. No ka laʻana, nā kulekele password - PostgreSQL he nui nā hoʻonui like ʻole (1, 2, 3, 4, 5), ka mea e hoʻokō i nā kulekele password, akā, i koʻu manaʻo, ʻaʻohe o lākou e uhi i nā pono āpau o ka ʻāpana hui kūloko.

He aha kāu e hana ai inā ʻaʻohe mea āu e pono ai ma nā wahi āpau? No ka laʻana, makemake ʻoe e hoʻohana i kahi DBMS kikoʻī ʻaʻole i loaʻa nā hana i koi ʻia e ka mea kūʻai.

A laila hiki iā ʻoe ke hoʻohana i nā hoʻonā ʻaoʻao ʻekolu e hana me nā DBMS like ʻole, no ka laʻana, Crypto DB a i ʻole Garda DB. Inā mākou e kamaʻilio e pili ana i nā hoʻonā mai ka ʻāpana home, a laila ʻike lākou e pili ana i nā GOST ʻoi aku ka maikaʻi ma mua o ka open source.

ʻO ka lua o ka koho e kākau i kāu mea e pono ai iā ʻoe iho, e hoʻokō i ka ʻikepili a me ka hoʻopili ʻana i ka noi ma ka pae kaʻina. ʻOiaʻiʻo, e ʻoi aku ka paʻakikī me GOST. Akā ma ka laulā, hiki iā ʻoe ke hūnā i ka ʻikepili e like me ka mea e pono ai, e hoʻokomo i loko o kahi DBMS, a laila e kiʻi a hoʻokaʻawale iā ia e like me ka mea e pono ai, pololei ma ka pae noi. I ka manawa like, e noʻonoʻo koke pehea ʻoe e pale ai i kēia mau algorithm i ka noi. I ko mākou manaʻo, pono e hana ʻia kēia ma ka pae DBMS, no ka mea e hana wikiwiki.

Ua hoike mua ia keia hoike ma @Hawaii waihona na Mail.ru Cloud Solutions. Nānā wikiō nā hana ʻē aʻe a kau inoa i nā hoʻolaha hanana ma Telegram A puni nā Kubernetes ma Mail.ru Group.

He aha hou aʻe e heluhelu ai ma ke kumuhana:

  1. ʻOi aku ma mua o Ceph: MCS cloud block storage.
  2. Pehea e koho ai i kahi waihona no kahi papahana no laila ʻaʻole pono ʻoe e koho hou.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka