Mysql
 sql >> база данни >  >> RDS >> Mysql

Ефективно съхраняване на 7 300 000 000 реда

"Сега - как бихте се справили с описания проблем?"

С прости плоски файлове.

Ето защо

Имате 2 000 000 субекта. Разделяне въз основа на номер на обект:

level1= entity/10000
level2= (entity/100)%100
level3= entity%100

Всеки файл с данни е level1/level2/level3/batch_of_data

След това можете да прочетете всички файлове в дадена част от директорията, за да върнете проби за обработка.

Ако някой иска релационна база данни, тогава заредете файлове за даден entity_id в база данни за тяхна употреба.

Редактиране На номера на дните.

  1. date_id /entity_id правилото за уникалност е не нещо, с което трябва да се работи. Това е (а) тривиално наложено върху имената на файловете и (б) ирелевантно за заявки.

  2. date_id "преобръщане" не означава нищо - няма заявка, така че няма нужда да преименувате нищо. date_id трябва просто да расте без граници от датата на епохата. Ако искате да изчистите старите данни, изтрийте старите файлове.

Тъй като нито една заявка не разчита на date_id , никога нищо не трябва да се прави с него. Това може да бъде името на файла за всичко, което има значение.

За да включите date_id в резултантния набор, запишете го във файла с останалите четири атрибута, които са във всеки ред на файла.

Редактиране при отваряне/затваряне

За да пишете, трябва да оставите файловете отворени. Правите периодични изтривания (или затваряте/отваряте отново), за да сте сигурни, че нещата наистина отиват на диска.

Имате два избора за архитектурата на вашия писател.

  1. Имайте един-единствен процес на „писател“, който консолидира данните от различните източници. Това е полезно, ако запитванията са относително чести. Вие плащате за обединяване на данните по време на запис.

  2. Отворете няколко файла едновременно за писане. Когато правите заявка, обединете тези файлове в един резултат. Това е полезно, тъй като заявките са сравнително редки. Вие плащате за обединяване на данните по време на заявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-добри практики за показване на резултати от търсенето със свързани текстови фрагменти от действителния резултат

  2. Как да избягвате запетаи в CSV стойности при импортиране на таблица в MySQL?

  3. Mysql преброява екземпляри на подниз, след което подрежда по

  4. PHP Конвертирайте mysql в mysqli

  5. ГРЕШКА 1030 (HY000) на ред 25:Получих грешка 168 от устройството за съхранение