Résoudre les éventuels problèmes de "Out of range value for column 'id'" dans une Base de Données

Plus aucun identifiant disponnible.

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous et à toutes !

Dans le cadre d’un projet en entreprise concernant les Objets connectés, de nombreuses données peuvent être générées toutes les 30 secondes.

Le problème : Imaginons que l’on ne peut stocker que 10 données (id, latitude, longitude, vitesse, etc…sur une même ligne) dans notre table "donnees". Une première ligne de données est créée. Une seconde. Une dixième…puis une Onzième…impossible, car on a dépassé la limite des 10 lignes de données.

L’identifiant est actuellement un "BIG INT UNSIGNED", donc c’est beaucoup. Mais je veux m’assurer que jamais un problème de limite ne vienne à se poser.

Y aurait-il une façon de résoudre se problème ? Si oui, comment feriez-vous ?

Je vous remercie par avance pour votre aide.

+0 -0

À une échelle de temps suffisamment grande, tu auras toujours un problème de taille d’identifiant.

En réalité, ton projet ne va pas générer une infinité de données sur un temps infini. L’idée est donc de prendre une évaluation très large de la quantité de données générée et du temps de fonctionnement de l’application, et de regarder combien de valeurs tu peux avoir besoin de stocker.

Par exemple, si ton entreprise devient gigantesque et stocke 1 000 000 000 données toutes les 30 secondes, dans 1000 ans elle aura stocké environ 1018 entrées, ce qui tient dans un nombre binaire à 60 chiffres. C’est environ 10 fois plus petit que la capacité d’un BIGINT, donc tu es très large.

D’une manière générale, un entier de 64 bits, c’est absolument gigantesque.

Bonjour !

Tes chiffres d’exemple sont très intéressants, je me demandais justement comment faire une approximation de la quantité des données stockées sur une échelle de temps.

Donc selon toi, il n’y a aucun crainte à avoir si je laisse le type "Big Int" en tant que clef primaire ? C’est plutôt rassurant alors de savoir que dans 1000 ans, je n’aurais pas à me soucier de ce problème. :lol:

Par contre, n’ayant aucune connaissance dans le monde du Big data, est-ce que tu penses qu’une simple base de données MariaDB suffit à faire le travail par rapport à la vitesse et à la gestion des données ? Elle serait stockée sur un serveur OVH. Un petit site et un serveur écrit en Java l’utiliseraient.

Merci encore de ta réponse. ^^

+0 -0

Le système de stockage de tes données dépend par contre de la volumétrie réellement prévisible de tes données, pas d’un calcul avec des hypothèses délirantes comme le mien.

Si tu as des hypothèses réalistes concernant ton volume de données, on pourra être plus précis.

Je ne saurais pas trop répondre à ta question. :euh:

Quelles données te seraient utiles pour pouvoir être plus précis ? C’est un projet relativement récent. Les nombre de données n’est jamais monté à plus de 7000 lignes il me semble.

Voici par exemple les types de variables que la table "données" possède pour chaque colonne.

image.png
image.png

Puis ensuite, tout dépendra des clients, et du nombre d’objets connectés qu’ils possèderont.

EDIT : Désolé, je viens de me rendre compte que je n’avais pas coché les notifications par courriel pour ce sujet. C’est maintenant chose faite.

+0 -0

Puis ensuite, tout dépendra des clients, et du nombre d’objets connectés qu’ils possèderont.

Il faut que tu fasses une estimation crédible et réaliste du nombre de clients et d’objets connectés que doit pouvoir gérer l’application à court et moyen terme. Ça te donnera la volumétrie des données, et donc la technologie de stockage adaptée.

Tu imagines bien que tu ne stocke pas dix-mille ligne comme dix millions ou dix milliards : ce ne sont pas les mêmes contraintes et probablement pas les mêmes outils que tu vas utiliser.

Je vois. Je vais essayer de demander ça à l’entreprise demain.

Après, j’imagine que un nombre incroyable de technologies existent et sont plus ou moins adaptées pour certains cas.

Mais par exemple, connaitrais-tu des bonnes technologies fiables et relativement faciles à mettre en place pour différentes utilisations (peu de donnés, beaucoup, énormément, etc…) ?

Désolé, c’est peut-être trop de questions.

Merci encore !

+0 -0

Il faut que tu fasses une estimation crédible et réaliste du nombre de clients et d’objets connectés que doit pouvoir gérer l’application à court et moyen terme. Ça te donnera la volumétrie des données, et donc la technologie de stockage adaptée.

Je plussoie fortement SpaceFox là-dessus. La technologie peut aussi bien être une base de données généraliste, des fichiers texte, ou un truc plus spécialisé. J’ai traité 500 Go de données sous la forme de fichiers texte de 30 000 lignes d’une vingtaine de chiffres. Et ça se fait très bien en quasi temps réel dans mon cas (avec une bonne machine). Je n’avais pas le choix des entrées sorties, et ma solution était probablement peu optimale, mais elle répondait au besoin en étant raisonnable en terme de temps de calcul et de temps de développement, donc c’était une bonne solution.

Si tu as environ 10 000 lignes de 20 éléments, tu dois pouvoir faire des opérations simples en temps réel avec à peu près n’importe quel solution. Tant que tu peux tout charger en mémoire, tu es relativement tranquille.

+1 -0

Bonjour et merci de ta réponse.

Donc c’est aussi une question de complexité du schéma de la base de données au final (et de matériel). Tout dépendra de ce que l’on souhaitera tirer des données stockées si j’ai bien compris.

Dans mon cas, ça ne semble pas très poussé. Et la plus grosse des tables est celle que je vous ai montré plus en haut.

Jusqu’à présent, j’effectuais de simples requêtes SELECT avec quelques jointures. Ce sont des accès assez fréquents qui sont effectués sur la base de données.

Pour le moment, MariaDB fonctionne très bien. Mais je vais voir si des alternatives existent dans le cas de plus gros projets.

Par contre, je suis pour le moment incapable de vous donner des chiffres précis. :euh:

EDIT : J’ai ma réponse. Le support de 1000 objets connectés serait déjà bien. Après, ils sont censés envoyer des trames toutes les 30 secondes. Mais ils peuvent aussi le faire aussi avant. Du coup, une base de données classique suffirait, non ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte