보관 기능과 쿼리 기능 모두를 위해 MySQL 데이터베이스로 가져 오려는 일부 보관 된 로그 파일이 있습니다.여러 테이블에 삽입 순서 유지
이러한 로그 파일의 각 줄은 특정 유형의 이벤트를 나타냅니다. 이를 설명하기 위해, 여기에 각 라인은 다른 이벤트 유형 인 상태, 예입니다 :
2013-01-15 03:30:08 - Failed login attempt for user 'helloworld' by 1.2.3.4
2013-01-15 03:30:08 - User 'helloworld' successfully logged in from 1.2.3.4
2013-01-15 03:30:08 - User 'helloworld' issued command 'randomcommand'
참고 타임 스탬프, 즉 문제와 관련이있다. 여러 이벤트가 (같은 초에 발생하는 경우이며, 타임 스탬프는 2 ~이 등, failed_logins
, successful_logins
, commands
그 접근 방식의 문제 -
내 초기 생각은 각 이벤트에 대한 테이블을 만드는 것이 었습니다 수준의 정밀도), 그들은 서로 다른 테이블에 있기 때문에 그들이 발생한 실제 순서를 알 수있는 방법이 없습니다.
내 다음 생각은 순서를 유지하는 기본 키와 함께 하나의 테이블을 사용하는 것이지만, 모든 이벤트 유형과 함께 손을 놓을 수 있습니다. (이상이 있습니다.)
CREATE TABLE log_lines (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
type INT, // 1 = failed_login, 2 = command, ...
failed_logins_user VARCHAR(32),
failed_logins_ip VARCHAR(15),
commands_user VARCHAR(32),
commands_command VARCHAR(128)
);
나는 이것을 달성하는 더 좋은 방법이 있다고 생각합니다.
요약하면 로그 파일에서 각 이벤트가 발생하는 순서를 유지하면서 데이터를 쿼리 할 수있게하는 것이 내 목표입니다. 이 문제를 어떻게 해결해야합니까?
얼마나 많은 이벤트 유형이 있습니까? – Alnitak
총 30 개, 대부분 2 개 이상의 필드가 포함됩니다. –
"주문을 보존하는 기본 키"옵션이 그렇게 좋지 않은 이유를 알 수 없습니다. 할 수있는 일은 데이터베이스에 삽입하기 전에 파일을 "준비"하는 것입니다. 예를 들어 grep을 사용하여 원하는 이벤트 유형을 얻을 수 있습니다 ('egrep "event1 | event2 | ... | eventk"yourfile> filetoexport'). – fedorqui