Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6915455
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T09:28:38+00:00 2026-05-27T09:28:38+00:00

Our application (using a SQL Server 2008 R2 back-end) stores data about remote hardware

  • 0

Our application (using a SQL Server 2008 R2 back-end) stores data about remote hardware devices reporting back to our servers over the Internet. There are a few “families” of information we have about each device, each stored by a different server application into a shared database:

  • static configuration information stored by users using our web app. e.g. Physical Location, Friendly Name, etc.
  • logged information about device behavior, e.g. last reporting time, date the device first came online, whether device is healthy, etc.
  • expensive information re-computed by scheduled jobs, e.g. average signal strength, average length of transmission, historical failure rates, etc.

These properties are all scalar values reflecting the most current data we have about a device. We have a separate way to store historical information.

The largest number of device instances we have to worry about will be around 100,000, so this is not a “big data” problem. In most cases a database will have 10,000 devices or less to worry about.

Writes to the data about an individual device happens infrequently– typically every few hours. It’s theoretically possible for a scheduled task, user-inputted configuration changes, and dynamic data to all make updates for the same device at the same time, but this seems very rare. Reads are more frequent: probably 10x per minute reads against at least one device in a database, and several times per hour for a full scan of some properties of all devices described in a database.

Deletes are relatively rare, in fact many cases we only “soft delete” devices so we can use them for historical reporting. New device inserts are more common, perhaps a few every day.

There are (at least) two obvious ways to store this data in our SQL database:

  1. The current design of our application stores each of these families of information in separate tables, each with a clustered index on a Device ID primary key. One server application writes to one table each.
  2. An alternate implementation that’s been proposed is to use one large table, and create covering indexes as needed to accelerate queries for groups of properties (e.g. all static info, all reliability info, etc.) that are frequently queried together.

My question: is there a clearly superior option? If the answer is “it depends” then what are the circumstances which would make “one large table” or “multiple tables” better?

Answers should consider: performance, maintainability of DB itself, maintainability of code that reads/writes rows, and reliability in the face of unexpected behavior. Maintanability and reliability are probably a higher priority for us than performance, if we have to trade off.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T09:28:39+00:00Added an answer on May 27, 2026 at 9:28 am

    Don’t know about a clearly superior option, and I don’t know about sql-server architecture. But I would go for the first option with separate tables for different families of data. Some advantages could be:

    • granting access to specific sets of data (may be desirable for future applications)

    • archiving different famalies of data at different rates

    • partial functionality of the application in the case of maintenance on a part (some tables available while another is restored)

    • indexing and partitioning/sharding can be performed on different attributes (static information could be partitioned on device id, logging information on date)

    • different families can be assigned to different cache areas (so the static data can remain in a more “static” cache, and more rapidly changing logging type data can be in another “rolling” cache area)

    • smaller rows pack more rows into a block which means fewer block pulls to scan a table for a specific attribute

    • less chance of row chaining if altering a table to add a row, easier to perform maintenance if you do

    • easier to understand the data when seprated into logical units (families)

    I wouldn’t consider table joining as a disadvantage when properly indexed. But more tables will mean more moving parts and the need for greater awareness/documentation on what is going on.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Our current web application is using SQL Server, we have a requirement for support
Has anyone encountered this error using SQL Server 2005 and Data access application blocks
Our application is using SQL Server 2005 as the database. We are using a
I'm using SQL Server 2005. Our application almost never deletes without it being a
We're using ELMAH for error logging in our ASP.NET application. We use the SQL
I am developing a PHP application using our XAMPP setup as a test server.
Our application downloads data from the internet using RSS but is having connection problems
In our application, we are using RMI for client-server communication in very different ways:
We recently updated our WPF application to perform its data synchronisation (using sync framework)
Our setup I have a small hosting setup consisting of an SQL Server (2008),

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.