Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - M_D

Stran: [1]
1
Server / CouchDB - mapování mezi partition a datovým shardem
« kdy: 04. 06. 2021, 17:16:08 »
Tak si hraji s CouchDB a myšlenkou na použití víc partition v rámci jedné DB a zkoumám, zda se dá předepsat nějak funkce, která by řekla do jakého datového shardu se má jaká partition mapovat? Nebo tohle nemám šanci ovlivnit? Předpokládám, že to dělá nějaký hash ze jména partition a tím to namapuje na shard, ale ani nikde jsem nenašel, jak to doopravdy dělá (a to ani pro případ, že se nepoužívá partitioning, tak jak volí algoritmus mapování klíče na shard).
Listování v dokuemtnaci a Googlu zatím nikam nevedlo. Na zkoumání Erlangu asi nervy a hlavu nemám. :-(

2
Server / Apache ZooKeeper a ACL dle x509?
« kdy: 10. 01. 2021, 10:09:05 »
Prosím, nemáte někdo v provozu Apache ZooKeeper a ideálně používáte ACL vázané na certifikát klienta? Marně se snažím přijít na to, jak vytvořit správně formátovaný ACL záznam, aby to ZK sežral a nevracel "milovanou" hlášku ZINVALIDACL = -114, /*!< Invalid ACL specified */
Nedaří se ručně pomocí zkCli:
Kód: [Vybrat]
setAcl /test/abc x509:CN=hostname,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown:crwdaa úplně stejně dopadnu, pokud to zkusím v kusu kódu v C:
Kód: [Vybrat]
        struct ACL ACLS[] = {
                {ZOO_PERM_ALL, {"auth", ""}},
                {ZOO_PERM_ALL, {"ip", "10.84.0.0/16"}},
                {ZOO_PERM_ALL, {"digest", "pokuston:wyEc72aaKNw9SXjCYLYECn9YWvg="}},
                {ZOO_PERM_ALL, {"x509", "CN=hostname,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown"}},
                {ZOO_PERM_READ, {"world", "anyone"}}

        };
        struct ACL_vector ACL_VEC = {5, ACLS};

        if ((rc=zoo_create(zh,"/xyz","value", 5, &ACL_VEC, 0, b, sizeof(b)-1))!=ZOK) {
                fprintf(stderr, "zoo_create() failed... %d\n", rc);
                return 4;
        }
Legenda (tady dokumentace) říká, že u schématu x509 se použije "x509 uses the client X500 Principal as an ACL ID identity", ale nikde jsem nenašel funkční příklad. Jen pár zoufalců řešících, jak to zadat. Jednu zmínku, že zkCli je rozbitý a nejde to zadat, tak pokus nativně v C dopadne stejně ( https://mchesnavsky.tech/zookeeper-x509-certificates-acl/ ).
Klient se přihlásí, server si zaloguje, že automaticky vytvořil x509 identitu na základě certifikátu klienta (takže klient nemusí explicitně volat addauth), ale jak udělat ACL, kde je to použito... Pokud z logu okopíruju tu x509 identitu, tak to také nesežere volání pro nastavení ACL:
Kód: [Vybrat]
Authenticated Id '1.2.840.113549.1.9.1=#160c61646d696e407465732e6575,CN=klient,OU=I,O=FIRMA,L=Mesto,C=CZ' for Scheme 'x509'Použití schémat ip/digest/world funguje OK. Zkoušeno na ZK 3.5.6 a ověřen stejný výsledek na posledním 3.6.2.

3
Vývoj / PostgreSQL a primární klíč s funkcí?
« kdy: 30. 01. 2020, 08:10:25 »
Bádám, zda primární klíč můž být u PgSQL založen na výsledku funkce, ale nedaří se (mám tady PgSQL9.5)?
Mějme tabulku ttt, kde jsou podstatné dva sloupce:
 smid    | integer not null  | ID zdroje
 casr    | tstzrange not null | Interval platnosti dat
jde udělat dvojsloupcový primární klíč nad obojím:
ALTER TABLE ttt  ADD CONSTRAINT "pk-ttt" PRIMARY KEY(smid, casr);
ale pro štastnější život by se mi hodil primární klíč, kde je zahrnut z toho casr jen počáteční čas, což asi nejde, končí jako syntax error?
ALTER TABLE ttt  ADD CONSTRAINT "pk-ttt" PRIMARY KEY(smid, lower(casr));
Normální index tak udělat jde:
CREATE UNIQUE INDEX "inx-ttt-scc" ON ttt(smid,lower(casr),lower_inc(casr));
Primární index se hodí mít a index dle (smid, casr) už tam je přítomen kvůli omezující podmínce na nepřekrývání se dat <CONSTRAINT "const-ttt-smid-casr" EXCLUDE USING gist (smid WITH =, casr WITH &&)>, takže se takto indexovaná data zbytečně duplikují a index založený jen na start (nebo end času) intervalu by se hodil u některých typů dotazů, kdy neumí využít index data z toho constraint.

Stran: [1]