Looking for guidance for architecting a reporting/analytics system - reporting-services

I am planning to build an advanced data reporting/analytics functionality in a health-tracking app. The app currently is already automatically tracking the user's sleeping time and heartbeat. Now imagine the app has a section where the user can save their preferences such as ideal sleeping time and weekly exercise schedule, and from these information the app is able to measure certain metrics based on the automatically collected low-level data.
As for the main technical challenge I am facing at the moment, I think it will be easier if I explain it in the form of an example.
Let's say a user sets his weekly exercise schedule on Mon, Wed & Sat. The app will start to produce insights and calculate percentages based on this information. All is good.
Then jump to 3 months later, the user updates his exercise schedule to Fri & Sun. So by design, the app will now use the new user preference to process the user's analytics and reporting data. This will retroactively tamper past data as well which as a result will skew them.
So obviously my intention is to avoid something like this from happening by keeping a snapshot of previous reporting/analytics data or the user preferences.
However I have never worked on something like this before therefore I am unsure how I should go about designing a database model or a high-level app architecture for this use case. Not to mention I am also having trouble trying to Google the right keywords.
So I would be very happy to receive any guidance, reading materials, links etc about this subject to get me started in the right direction.
Thank you in advance!

Related

Change certain values in cells automatically from other spreadsheet or sheet

please consider that I am a total newbie with these things.
At work, I have an everyday plan of two numbers - money and people.
I know these numbers for a month ahead.
I have my own (another) spreadsheet with data, where I enter numbers during the day.
What I want to achieve is that the data with plans in one spreadsheet will appear the next day at a specific time, let's say 8 AM in another spreadsheet with my data in specific cells.
I know I will have to use scripts, but I don't know how they should look and how to achieve this result.
Thank you kindly in for any possible solutions.
I have taken the tabular approach to build timers that I use for cooking different items. I make a sheet/tab for each cooking process for example rice is shown below.
When the app runs it opens up like this:
This screen allows the user to enable the audio.
This screen allows the operator to choose a timing process.
This screen runs the timer process automatically and allows to me to add additional timers if I wish. The browswer client has to remain active during this time since this app is running on the clientside.
But your script will be running on the server and will probably have no user interace at all. It will just create the spreadsheets and sheets and make the data transfer total autonomously when it receives the timebased trigger. So you won't need to create any html dialogs for your script. It will just run on the server performing the operations that you specify. Of course, it's easier to build something like this if you already know how to program them. So if you have no programming you may find it necessary to hire someone to assist you in the development.

How to set up a paywall with Firebase?

I am wanting to restrict access to a portion of my site. When a user that is logged in pays they get access to that area of my site.
I am looking at the easiest way to accomplish this. Saying the word "Paywall" before I know whats involved sounds so easy, but it has become troublesome to figure out. I am not the worlds best coder but can manage.
I have tried to implement Stripe & Firebase with Zapier, but couldn't manage to link logged in users. Also, Zapier only runs every 5 minutes as well and users would have to wait that time to access.
I have tried to implement Stripe & Firebase without Zapier. There isn't much assistance I could find online that didn't involve Angular. I don't really want to use angular.
To summarize: I want the logged in user to click purchase and they pay to get access to a certain area of my website. I want the payment to process and for this to be logged in the Cloud Firestore database.

How to store simple piece of data online without using MySQL?

I'm creating an application for work in which I need to be able to disable the app if I leave the company. I'll maintain ownership and this agreement to cancel upon my departure is agreed upon in our contract.
Since these apps will be used by other people, I need to perform a "check" upon launching as to whether access is still granted or not.
I know that MySQL would be perfect for this by simply storing a 0 or 1 in a TINYINT table, but I don't want to use MySQL for this small task since I'd have to use free hosting which has proven hard in finding reliable hosts with remote access enabled.
Ideally I'd like a website that offers a personalized URL like http://randomURL.com/X38DAKNLD828ND that I could store a simple piece of text like "Enabled" or "Disabled".
There must be some simple way to store such a small piece of data?
Just try parse.com
If you're writing a small/simple app (or a throwaway prototype) with little to no logic on the backend then go for it, but for something larger/scalable it's best to avoid it, I can say that from first hand experience

How do I set up the architecture for a "big data" analysis project?

A friend of mine and I are in our senior year and will be starting a senior project soon. We had the idea to do a data analysis and data visualization project for it. Our project involves reading a CSV file that is updated every 2 minutes, parsing that data, then storing it in a database. Once that data is stored we want to run some analysis on it and provide an API through which we could access that data to visualize in some way. Our end goal would be to build an Android app that displays some of the raw data from the CSV and the analysis in a user friendly format. I talked to another CS Major and he explained that I would need a few different servers to accomplish this: One for the storage, another for analysis, and another for some type of queue that would make sure things don't get screwy while we are doing scraping and analysis. The problem is, I don't really know where to start with this. I've done some work with a SQL database before and a PHP front end, but nothing with multiple servers. I've heard of tools to use with big data projects like Hadoop but i'm not exactly sure where it fits in. If someone could point me to a resource of some kind to explain, or explain themselves, how I would start to structure this kind of project, that would be awesome!
Since you don't have much experience with these things you'll probably want to look at projects like Cloudera. Specifically their resources page has a nice set of videos and articles.
Another source of solid information (that I personally use) is by clicking on an Stack Overflow tag and selecting the votes option. Many good questions on a plethora of big data topics already exists.

Tracking data access

Backstory
I work for a company that has an online site that allows user to text personal information for collection. We collect the data, and make it available online. Users can choose to share the data with other users.
Going Forward
At some point, this may become classified an FDA-governed medical tool. In anticipation, we'd like to have in place a logging system that shows each time someone accesses our users' data, whether it be the user themselves, another authorized user, or a support person.
Current Architecture
We are currently running Ruby/Rails, and using a MySQL database. The personal information is encrypted in the database.
Data Access for Support
Today, support personnel can access data one of three ways:
admin site The admin site is limited to whatever screens we develop. While we don't currently, we could easily add logging to keep an audit trail of who accessed which data using the admin tool.
sql client I use MySQLWorkbench to access production. However, when connected this way, all personal information (user name, cell number, etc), is encrypted.
Ruby Rails console - Finally, support can log into one of the production boxes and use the Ruby/Rails console from command line. Ruby will decrypt the data, so we can do some simple things such as
u=User.find_all_by_state('active')
and it will return the recordset of all users with state='active', and decrypt their personal information in the resultset.
Holy Grail
logging
easy access for support
I'd love to be have a way to allow easy support access (once authenticated) to the data, but would log everything that is accessed (read or updated). That way, if I'm checking out my buddy's ex-wife's data for example, it gets logged to a place where I can't get in and clean it the audit trail. (See Google firing Gmail employee for an example of employees breaching the data policies).
Anyone have ideas, thoughts, experiences, suggestions with this issue?
hey devguy. This was a issue for me a couple months back. We ended up centralizing our mysql queires so that we could start to track all information coming in and out. Unfortunately the class I wrote is in PHP but the idea behind it could make it very easy to start logging.
https://code.google.com/p/php-centralized-mysql-controller/
Try stored procedures. Make all code use the stored procedures for CRUD activities. This defines an API that your developers can use while business rules are global enforced (don't return entire SSN values, but only last 4 digits, etc).
This serves as the basis for an external API as well.
If you want logging/auditing, you put it in the procedure.
This protects you from everyone except the DBAs.