Based on the little information available, I would make a lookup field consisting of tablename and primary keys.

(although I still believe that storing this information in the database in the first place is probably the wrong approach, but to each his own)

/ Carsten

On 31-05-2013 12:58, Neil Tompkins wrote:
The kind of look ups will be trying to diagnose when and by who applied
a update.  So the primary key of the audit is important.  My question is
for performance, should the primary key be stored as a indexed field
like I mentioned before, or should I have a actual individual field per
primary key


On Fri, May 31, 2013 at 11:03 AM, Carsten Pedersen <cars...@bitbybit.dk
<mailto:cars...@bitbybit.dk>> wrote:

    Again: Unless you can give some idea as to the kind of lookups you
    will be performing (which fields? Temporal values? etc.), it is
    impossible to give advice on the table structure. I wouldn't blame
    anyone for not being able to do so; saving data for debugging will
    always be a moving target and almost by definition you don't know
    today what you'll be looking for tomorrow.

    That's why I think that using CSV tables _the contents of which can
    subsequently be analyzed using any of a number of text file
    processing tools_ may indeed be your best initial option.

    On UUIDs vs. INTs: (1) Please do yourself a favor and read up on how
    UUIDs are generated. If it's the same server that generates all the
    UUIDs, you won't get a lot of uniqueness for the amount of space
    you'll be using for your data and index; (2) Please do the math of
    just how many inserts you can do per second over the next 1.000
    years if you use a longint auto-increment field for your PK.

    / Carsten

    On 31-05-2013 11 <tel:31-05-2013%2011>:14, Neil Tompkins wrote:

        Thanks for your response.  We expect to use the Audit log when
        looking into
        exceptions and/or any need to debug table updates.  I don't
        think a CSV
        table would be sufficient as we are wanting to use a interface
        to query
        this data at least on a daily basis if not weekly.

        I use UUID because we have currently 54 tables, of which
        probably 30 will
        be audited.  So a INT PK wouldn't work because of the number of
        updates we
        are applying.


        On Fri, May 31, 2013 at 9:58 AM, Carsten Pedersen
        <cars...@bitbybit.dk <mailto:cars...@bitbybit.dk>>wrote:

            On 30-05-2013 09:27, Neil Tompkins wrote:

                Hi,

                I've created a Audit table which tracks any changed
                fields for multiple
                tables.  In my Audit table I'm using a UUID for the
                primary key.  However
                I
                need to have a reference back to the primary key(s) of
                the table audited.

                At the moment I've a VARCHAR field which stores primary
                keys like

                1
                1|2013-05-29
                2|2013-05-29
                2
                3
                1|2|2
                etc

                Is this the best approach, or should I have a individual
                field in the
                audit
                table for all primary keys.  At the moment I think the
                max number of
                primary keys on any given table is 3

                Thanks
                Neil


            First you need to ask yourself how you expect to use the
            table in the
            future. Will you be looking up the data on a regular basis?
            Or will lookups
            only be something you will do in exceptional situtions?

            What is the intended goal of having a UUID for the primary
            key rather
            than, say, an integer - or having no PK at all?

            My immediate thought when reading this was "why even store
            that data in a
            table?" - if it's a simple log, use a log file. Especially
            if you don't
            know how you intend to search for data later on. There are
            many tools that
            are far superior to SQL when it comes to searching for text
            strings. You
            could even consider having a CSV table, which will give you
            an SQL
            interface to said text file.

            / Carsten



            --
            MySQL General Mailing List
            For list archives: http://lists.mysql.com/mysql
            To unsubscribe: http://lists.mysql.com/mysql




    --
    MySQL General Mailing List
    For list archives: http://lists.mysql.com/mysql
    To unsubscribe: http://lists.mysql.com/mysql



--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to