Бих искал да чуя някои мнения или мисли относно дизайна на mysql база данни.
По принцип имам сървър tomcat, който получава различни типове данни от около 1000 системи на място. Всяка от тези системи е уникална и ще докладва уникални данни.
Изпращаните данни могат да бъдат категоризирани като чести и нечести данни. Нечестите данни се изпращат само около веднъж на ден и не се променят много - това са основно данни, базирани на конфигурация.
Чести данни се изпращат на всеки 2-3 минути, докато системата е включена. И представлява текущото състояние на системата.
Тези данни трябва да бъдат базирани в база данни за всяка система и да бъдат достъпни по всяко време от php страница. По същество за всяка система в областта, една PHP страница трябва да има достъп до всички данни на тази клиентска система и да ги показва. С други думи, базата данни трябва да показва състоянието на системата.
Самата информация е изцяло текстова и има много. Конфигурационните данни (които не се променят много) са двойки ключ-стойност и в момента има около 100 от тях.
Идеята ми за дизайна беше да има 100+ колони и 1 ред за всяка система, за да съхранява конфигурационните данни. Но се притеснявам да имам толкова много колони, главно защото не е твърде надеждно за бъдещето, ако трябва да добавя колони в бъдеще. Освен това се притеснявам за скоростта на вмъкване, ако го направя по този начин. Това може да доведе до таблица с 2000 реда x 200 колони, която се осъществява около 100 пъти в секунда, така че трябва да се погрижа за това в първоначалния си дизайн.
Също така се чудя дали има някакви философии на дизайна, които се грижат за често променящи се и рядко променящи се данни, базирани на двигателя. Това би имало смисъл, тъй като искам да поддържам ниско време за INSERT/UPDATE и не ме интересува твърде много времето за SELECT от php.
Бих искал също да знам как да разделям данните. т.е. ако често променящите се данни могат да бъдат категоризирани по няколко различни начина, трябва ли да имам куп таблици, представящи данните и да ги обединявам при избори? Притеснявам се за това, защото вероятно ще трябва да направя отчет, за да покажа общи свойства между всички системи (т.е. да покажа всички системи с определено условие).
Надявам се, че съм предоставил достатъчно информация тук, за да може някой да ме насочи в правилната посока, всяка помощ по въпроса би била чудесна. Или ако някой е правил нещо подобно и може да даде съвет, ще съм много благодарен. Благодаря купища :)
~ Дан