Vhodná DB pro logování přístupu k entitám rubrika: Databáze: NoSQL

3 Milan Pála
položil/-a 26.1.2015

Ahoj. V součastnosti logujeme v naší webové aplikaci (PHP, MySQL) všechny importy/exporty. Ukládáme si ke každému běhu importu/exportu informace o samotném běhu (začátek, konec, počet položek ve frontě, vytížená paměť) a potom jednotlivé entity, které prošli během (id entity, její typ - FQN, start, konec, importovaná/exportovaná data, chyby). V administraci máme potom přehled běhů procesů s možností podívat se na jednotlivé položky a prokliknout si je do jejich dílčí administrace. Můžeme si ale také vyfiltrovat všechny změny nad jednou entitou. Zpětně tedy vidíme, kdy prošla jaká položka importem/exportem.

Všechno si to ukládáme do produkční MySQL databáze s InnoDB tabulkami. Má to samozřejmě nevýhodu, že to trvá. Zápis každé logovací položky trvá stejně jako editace příchozí položky, takže polovinu času zabere import a polovinu logování. Např. editace jednoho řádku nám trvá 18 ms, zápis logovací informace o položce trvá 12 ms. Má to výhodu ve snadném napojení na PHP a stávající datový model, kde je pouze MySQL a Doctrine 2.

Rádi bychom vyměnili logování do MySQL za něco rychlejšího. Nemusí to mít cizí klíče, transakce atd. Rád bych tam ukládal jednotlivé položky, vlastní běhy si můžu nechat v MySQL. Každou položky bych si indexoval IDčkem toho běhu z MySQL. Alternativou by mohla být MyISAM tabulka, ale pořád vytěžuji produkční DB. Takže jsme přemýšleli nad nějakou NoSQL databází, např. CouchDB. Důležité je, abych se dokázal získat snadno (=rychle) všechny položky podle ID běhu, ale také podle typu entity a jejího ID. Zároveň bych chtěl, aby databáze byla cílová.

Nějaké nápady, zkušenosti? Díky


Změněno 26. 1. 2015 v 9.00: Změnil jsem název vlákna z "Vhodná DB pro logování změn entit" na "Vhodná DB pro logování přístupu k entitám".

Komentáře

  • stanislav.miklik : mozno off-topic. ale ako riesite importy/exporty? predpokladam, ze ide o vacsi pocet zaznamov. zaznamy (a prislusne logy) pises v jednej tranzakcii alebo zaznam per transaction? taketo importy vie zrychlit aj pouzitie batch processingu. 13.2.2015
odkaz
9 Augi
odpověděl/-a 29.1.2015

Zkusil bych se podívat na Kibanu+ElasticSearch: http://www.elasticsearch.org/overview/kibana/

Pro zobrazení všech 7 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.