Postanowiłem sobie w celach nauki wyważyć otwarte drzwi i napisać mały system SCADA pod stronę WWW.
Obecnie miałem przyjemność pracować z jakimiś gotowymi wewnętrznymi rozwiązaniami firm, w których pracowałem niestety czasem ich wydajność i łatwość rozbudowy (naogół osoba, która stworzyła oprogramowanie już dawno tam nie pracuje) pozostawiała wiele do życzenia. Nigdy nie zajmowałem się projektowaniem rozbudowanych baz danych i nie wiem w jakim kierunku pójść. Poniżej mój obecny problem:
Baza musi umożliwiać dodawanie nieograniczonej liczby zmiennych - chciał bym na wstępie zapobiec sytuacji, że mam np. możliwość dodania 1000 zmiennych i nie więcej. Każda zmienna może być różnego typu: int, uint, float, double, string itd... Jak zatem magazynować różnego typu dane? W jednej tabeli czy każdą zmienną w oddzielnej? a może po jakimś okresie czasu przepisywać dane do innej tabeli? Możecie podzielić się swoim doświadczeniem?
Spotkałem się raz z systemem, który wpisuje wszystkie dane do 1 tabeli. Niby wszystko fajnie na początku działa ale jak klient zażyczył sobie próbkować dane co 1s i każdą zapisywać do bazy to w krótkim okresie czasu dostęp do danych robił się baaaaaardzo powolny. Wydaje mi się zatem, że najwygodniej będzie aby każda zmienna była w oddzielnej tabeli. Co o tym sądzicie?
Ogólny zarys działania systemu i technologii jakie sobie wymyśliłem:
- pobieranie danych z urządzeń - c, c++, java albo python
- Wykonanie obliczeń definiowanych przez użytkownika - jscript albo php
- wpisanie danych do bazy - c, c++, java albo python
- wizualizacja na stronie www - ajax, jscript, php
- interakcja z użytkownikiem i urządzeniami poprzez stronę www (ustawienie wartości, wymuszenie stanu)
Protokół komunikacyjny z urządzeniami to chyb modbus RTU/TCP. Dość wygodny i na początku w zupełności wystarczy.
Z góry dziękuję za pomoc