Jump to content
Che

Va rog ajutor Baza de Date!

Recommended Posts

Salut!

 

Am reusit intr-un final si am descarcat toate ticker-ele de pe Yahoo! Finance folosind libraria din python numite yfinance.

Acum as vrea sa le bag pe toate intr-o baza de date.

Problema este ca nu stiu cum sa fac aceasta baza de date din moment ce am peste 350.00 de tickers iar ca si values adica istoricul pretului pe zi pentru fiecare  este ~38.000.

Eu initial voiam sa le bag in SQLite dar SQLite suporta maximum 2000 de coloane iar daca o recompilezi poate suporta maximum ~32.000 de coloane.

Vreau sa le bag pe toate intr-o baza de date pentru rapiditatea interogarii si de asemenea ma intreseaza sa afisez urmatoarele chestii:

  1. Care sunt tickerele cu cea mai mare scadere in perioada X?
  2. Care sunt tickerele cu cea mai mare crestere in perioada Y? etc.

 

Banuiesc ca pentru acest lucru ar trebui sa ai tabelul de forma:

Ticker1|Ticker2|Ticker3|...|TickerN|

Adica tickers sub forma de coloane iar randurile sub forma de istoric al pretului.

Chestia este ca nu poti baga toate ticker-ele ca si coloane din moment ce ele sunt ~350.000 ca numar.

Si daca faci asa, cum faci data ca si ZI sa fie autoincrement ca in loc de index si cum faci un query cu select ca sa selectezi o perioada in functie de data?

Pe urma nu poti pune nici baza de date invers adica:

Day1|Day2|Day3|Day4|Day5|...|DayN|

Adica zilele ca si coloane iar pe randuri sa ai fiecare ticker si orizontal, dupa el, fiecare istoric de pret pe fiecare zi.

Nu poti pune fiindca maximum suportat este 2000 si tu ai ~38.000 de unitati.

Si daca faci asa, cum ai selecta pentru o anumita perioada?

 

Multumesc mult de tot pentru ajutor!

Link to comment
Share on other sites

Avand in vedere ca datele sunt relativ unstructured si ai multe, eu unul ma gandesc la BigData.

Poate MongoDB, poate hadoop.

Ceva orientat pe documente. SQL e prea inflexibil pentru care date ai tu, incearca NoSQL.

 

https://kb.objectrocket.com/mongo-db/how-to-import-a-csv-into-mongodb-327

 

https://stackoverflow.com/questions/32076382/mongodb-how-to-get-max-value-from-collections

 

  • Thanks 1
  • Upvote 2
Link to comment
Share on other sites

2 hours ago, yoyois said:

Avand in vedere ca datele sunt relativ unstructured si ai multe, eu unul ma gandesc la BigData.

Poate MongoDB, poate hadoop.

Ceva orientat pe documente. SQL e prea inflexibil pentru care date ai tu, incearca NoSQL.

 

https://kb.objectrocket.com/mongo-db/how-to-import-a-csv-into-mongodb-327

 

https://stackoverflow.com/questions/32076382/mongodb-how-to-get-max-value-from-collections

 

Vad ca MongoDB este un fel de JSON, ma gandesc ca va fi o baza de date uriasa ca si rezultat.

Nu prea inteleg ce este hadoop si cum se foloseste.

Are aici documentatia, m-am uitat asa rapid dar nu vad vreun tutorial concret cum sa creezi o baza de date, cum sa creezi un tabel si sa adaugi date in el.

https://hadoop.apache.org/docs/current/

 

Este de fapt o librarie cum este cea de XGBoost din python ca parca imi amintesc ca am vazut mai demult ceva pe YouTube despre predictia pariurilor sportive bazate pe hadoop?

Link to comment
Share on other sites

15 minutes ago, Che said:

Nu prea inteleg ce este hadoop si cum se foloseste.

Apache Hadoop is an open source framework that is used to efficiently store and process large datasets ranging in size from gigabytes to petabytes of data. Instead of using one large computer to store and process the data, Hadoop allows clustering multiple computers to analyze massive datasets in parallel more quickly.

  • Thanks 1
Link to comment
Share on other sites

Salut! La volumetria pe care o zici 350k + 38k zilnic, as zice ca MariaDB s-ar misca foarte bine. Bineinteles conteaza cum creezi structura bazei si cum extragi datele. Sa te asiguri ca ai performanta o tabela partitionata pe timp si niste query-uri care sa foloseasca windows functions merg foarte bine. Pot sa garantez ca functioneaza pentru ca am creat o solutie asemanatoare care se afla in productie iar baza are 2.5 TB cu milioane de inserturi pe ora.

  • Thanks 2
Link to comment
Share on other sites

4 hours ago, dimss said:

Salut! La volumetria pe care o zici 350k + 38k zilnic, as zice ca MariaDB s-ar misca foarte bine. Bineinteles conteaza cum creezi structura bazei si cum extragi datele. Sa te asiguri ca ai performanta o tabela partitionata pe timp si niste query-uri care sa foloseasca windows functions merg foarte bine. Pot sa garantez ca functioneaza pentru ca am creat o solutie asemanatoare care se afla in productie iar baza are 2.5 TB cu milioane de inserturi pe ora.

X0F5Cci.png

Dar zice ca are ca limita maxim 4086 coloane care poate fi chiar si mai putin, totul fiind in functie de marimea datelor.

Cum pot pune ca si coloane acele tickere daca ele sunt 350.000+ ? Si nici ca si zi nu pot sa pun coloanele iar prima coloana sa fie indexul iar a doua sa fie ticker_id fiindca sunt ~38.000 de valori pentru un ticker. Cum as putea sa le integrez?

Cum ar trebui sa arate designul (structura) bazei de date ca pe mine asta ma intereseaza de fapt?

Multumesc mult!

Edited by Che
Link to comment
Share on other sites

Sper ca nu incerci sa spui ca suporta DOAR 4096 coloane :)) Doar n-ai de gand sa faci cate o coloana pentru fiecare moneda.

Fa tabel de monede (cheie primara, symbol, etc ce mai vrei) si tabel de preturi (fk_moneda - adica id-ul din tabelul de monede, pret, data, etc ce mai vrei tu).

Apoi interoghezi usor diverse cazuri.

Eu as merge pe MySQL ca imi place mie.

  • Thanks 1
  • Upvote 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...