# Historian help needed

**URL:** <https://forum.inductiveautomation.com/t/historian-help-needed/51281>\
**Category:** Ignition\
**Created:** [September 23, 2021, 7:16pm UTC](https://forum.inductiveautomation.com/t/historian-help-needed/51281 "2021-09-23T19:16:24Z")\
**Posts on this page:** 1\
**Showing post:** 19

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [November 18, 2021, 9:53pm UTC](https://forum.inductiveautomation.com/t/historian-help-needed/51281/19 "2021-11-18T21:53:52Z")

</div>

Y'all might find this topic helpful:

> [@SQL Tall/Long vs Wide Table Structure](https://forum.inductiveautomation.com/t/sql-tall-long-vs-wide-table-structure/26231):
>
> I am in the process of trying to collect high speed historical data to an MSSQL database. We would like to collect data to set up a predictive maintenance system. We would like to collect information like temperature, vibration, voltage, current, etc. on CNC machines on a per machine cycle/part cycle basis at a 100mS sample rate. We would then like to compare the charts based on machine/part cycle to set thresholds and detect abnormalities before they become breakdowns. We are collecting all…

Further things to consider:

- Anything you can do with a transaction group you can do with a gateway timer script or a gateway tag change event. Scripted manipulation of wide tables can perform more complicated and/or more robust handshaking with PLCs than transaction groups.

- If you only care about a particular data item's relationship to _ **time** _, and you only need to store it when it changes, then it is a good candidate for the tag historian.

- If the value represents a process reading (analog perhaps) that has a bit of jitter you can ignore, then it is a **very** good candidate for the tag historian.

- If you care about a particular data item's relationship to _ **other items** _, they probably need to be sampled and stored together. Use a wide table, not the historian. If sampling on a trigger, use OPC Read mode in the transaction group, or `system.opc.read*()` in a script, to ensure you have the associated data from **after** the trigger change.

If you need the data stored in a SQL DB in a predictable structure for non-Ignition access, avoid the tag historian. Unless you are willing to implement a web API with the webdev module to deliver data to external consumers.

---

_[View the full topic](https://forum.inductiveautomation.com/t/historian-help-needed/51281)._
