Vhodná DB pro logování přístupu k entitám rubrika: Databáze: NoSQL
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".
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:
Nebo se přihlaste jménem a heslem:
Komentáře