Skip to main content

DB design new table vs new columns Post, Location/Place and Datetime

https://www.red-gate.com/simple-talk/sql/database-administration/five-simple-database-design-errors-you-should-avoid/

This post have described some useful technique to avoid and reduce mistake on DB design.
It seem all the shitty design here that Wordpress have it all :) Even though you can see why WP use this way, but after all as a Web/Software developer I feel WP should not be used in complex and important site ie. payment ...

https://dba.stackexchange.com/questions/188667/best-database-and-table-design-for-billions-of-rows-of-data

 https://www.quora.com/What-is-Facebooks-database-schema
https://www.facebook.com/notes/facebook-engineering/tao-the-power-of-the-graph/10151525983993920

Certainly, FB implement or any other big tech are out of  normal solution, so it is for reference and research only (?)
[ https://www.quora.com/What-is-Facebooks-database-schema ]

In normal implementation we mostly use Relational DB design or noSQL.
For example User and Friend tables:
https://stackoverflow.com/questions/1009025/facebook-database-design

In my case it is Post - Location/Shop.

[ https://dba.stackexchange.com/questions/188667/best-database-and-table-design-for-billions-of-rows-of-data ]
Yeah, travel data and weather data is very interesting me. And this post mentioned it. If I have enough time I will try to build or investigate how weather app gather data for example development country like Vietnam. Weather forecast always have it's value and the longer future it predict, the more error it get ?
I often double check US Navy weather data with some other source to compare. You know storm direction is a critical information.

1. Don't use NoSQL for this. The data is highly structured and fits a relational database perfectly.
2. I personally use SQL Server 2016 and I have no problems applying computations across that volume of data. It was originally on a PostgreSQL instance when I started my job and it couldn't handle the volume of data as it was on a small AWS instance.
3. I would highly recommend extracting the hour portion of the date and storing it separate from the date itself. Believe me, learn from my mistakes!
4. I store the majority of data list-wise (DATE,TIME,DATAPOINT_ID,VALUE) but that is not how people will want to interpret the data. Be prepared for some horrendous queries against the data and vast amounts of pivoting. Don't be afraid to create a de-normalized table for result sets that are just too large to compute on the fly.

My function does not use datetime much, so I can ignore these complex part.
Yes, my data fit for Relational DB, but I am not sure chose new table or new column. Since my Post table always have place/location data then it seem never have null cell. So new column will be acceptable.
And by my experience new column better new table in some case like reduce join, object relation mapping ...
My location data combined of many level administrative devisions.

This one is very similar with my problem
https://stackoverflow.com/questions/8763771/is-this-a-good-db-schema-for-locations

I want to store post in a shop and want to know the location of the shop to country / province|city and prefecture | district;

https://github.com/Vheissu/Open-Source-Database-Schemas/blob/master/vheissu-instagram-schema.md

Instagram schema above did not store explicitly location ID (ie. PlaceID). So how it use lat/long only to fetch location ?
It seem not what I need but may be this way better since geolocation / placeid can be change and depend on 3rd partly ie. Google, 4sq, mapbox ... ? And cling to PlaceID seem not alway correct ?

Anyway, my app have placeID and some mechanism for update this over Google.


Some other shit may be helpful :)
https://www.8bitmen.com/instagram-architecture-how-does-it-store-search-billions-of-images/


Comments

Popular posts from this blog

AWS Elasticache Memcached connection

https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/accessing-elasticache.html#access-from-outside-aws http://hourlyapps.blogspot.com/2010/06/examples-of-memcached-commands.html Access memcached https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/GettingStarted.AuthorizeAccess.html Zip include hidden file https://stackoverflow.com/questions/12493206/zip-including-hidden-files phpmemcachedadmin ~ phpMyAdmin or phpPgAdmin ... telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211 stats items stats cachedump 27 100 https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/VPCs.EC.html https://lzone.de/cheat-sheet/memcached VPC ID Security Group ID (sg-...) Cluster: The identifier for the cluster memcached1 Creation Time: The time (UTC) when the cluster was created January 9, 2019 at 11:47:16 AM UTC+7 Configuration Endpoint: The configuration endpoint of the cluster memcached1.ahgofe.cfg.usw1.cache.amazonaws.com:11211 St...

Notes Windows 10 Virtualbox config, PHP Storm Japanese, custom PHP, Apache build, Postgresql

 cmd => Ctrl + Shift + Enter mklink "C:\Users\HauNT\Videos\host3" "C:\Windows\System32\drivers\etc\hosts" https://www.quora.com/How-to-create-a-router-in-php https://serverfault.com/questions/225155/virtualbox-how-to-set-up-networking-so-both-host-and-guest-can-access-internet 1 NAT + 1 host only config https://unix.stackexchange.com/questions/115464/how-to-properly-set-up-2-network-interfaces-in-centos-running-in-virtualbox DEVICE=eth0 TYPE=Ethernet #BOOTPROTO=dhcp BOOTPROTO=none #IPADDR=10.9.11.246 #PREFIX=24 #GATEWAY=10.9.11.1 #IPV4_FAILURE_FATAL=yes #HWADDR=08:00:27:CC:AC:AC ONBOOT=yes NAME="System eth0" [root@localhost www]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 # Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 IPADDR=192.168.56.28 <= no eff => auto like DHCP #GATEWAY=192.168.56.1 #BOOTPROTO=dhcp BOOTPROTO=static <= no eff ONBOOT=yes HWADDR=08:00:27:b4:20:10 [root@localhost www]# ...

Rocket.Chat DB schema

_raix_push_notifications avatars.chunks avatars.files instances meteor_accounts_loginServiceConfiguration meteor_oauth_pendingCredentials meteor_oauth_pendingRequestTokens migrations rocketchat__trash rocketchat_cron_history rocketchat_custom_emoji rocketchat_custom_sounds rocketchat_import rocketchat_integration_history rocketchat_integrations rocketchat_livechat_custom_field rocketchat_livechat_department rocketchat_livechat_department_agents rocketchat_livechat_external_message rocketchat_livechat_inquiry rocketchat_livechat_office_hour rocketchat_livechat_page_visited rocketchat_livechat_trigger rocketchat_message rocketchat_oauth_apps rocketchat_oembed_cache rocketchat_permissions rocketchat_raw_imports rocketchat_reports rocketchat_roles rocketchat_room rocketchat_settings rocketchat_smarsh_history rocketchat_statistics rocketchat_subscription rocketchat_uploads system.indexes users usersSessions https://rocket.chat/docs/developer-guides/sc...