Suite

Interrogation de données SQL et ArcGIS : quelle différence ?


Je me demande si le langage utilisé par ArcGIS pour les requêtes de données (par exemple, la recherche par attribut) fait partie du langage SQL, ou dans quelle mesure il existe un lien entre les deux (et d'où vient-il) ?


J'ai des difficultés avec la classification de "recherche par attribut" en tant que "langue". Pour comprendre une réponse à cette question étonnamment vaste, il faut comprendre la signification d'un certain nombre de termes informatiques, notamment : logiciel d'application, langage de programmation, format de données, interface utilisateur et paradigme d'accès.

ArcGIS est un logiciel d'application. Il a une longue histoire et prend en charge des dizaines de formats de données différents. Certains de ces formats de données incluent des bases de données relationnelles (un autre type de logiciel d'application), dont la plupart prennent en charge une syntaxe de requête commune connue sous le nom de langage de requête structuré (SQL).

La sélection par attributs outil est un composant de l'interface utilisateur de l'application ArcMap.

Il doit soutenir tous les formats pris en charge par ArcGIS. Ceci est accompli par l'environnement de développement ArcObjects (dans lequel ArcGIS est écrit) en organisant les sources de données dans des bibliothèques de code qui prennent en charge chaque format de données, puis en fournissant un ensemble commun d'interfaces pour interagir avec ces formats (obtenir la liste des champs, obtenir le type de données du champ , obtenir la liste des valeurs uniques dans le champ,… ) En termes de développement logiciel, cela s'appelle informations cachées -- l'application n'a pas besoin de se soucier de ce que le format doit faire pour prendre en charge une requête, juste que le composant chargé de cette prise en charge ne renvoie pas de message d'erreur lorsqu'il lui est demandé de le faire.

Les bibliothèques de code pour les sources de données qui prennent en charge SQL délèguent l'évaluation de l'expression de requête à une requête SQL réelle. De plus, pour les sources de données où la géométrie est stockée dans la base de données, les demandes de dessin réelles incluront un fragment d'expression SQL qui limite les résultats à ceux dont l'étendue chevauche la fenêtre de dessin actuelle (mais il est important de noter que le module de code qui est responsable pour réellement dessiner sur le canevas de l'ordinateur a toujours la responsabilité ultime de s'assurer que la fonctionnalité réside dans le champ de vision).

En résumé, ArcGIS utilise SQL dans les sources de données qui prennent en charge SQL et peut utiliser quelque chose qui regards comme SQL pour les sources de données qui ne sont pas techniquement compatibles avec SQL (comme les fichiers de formes et les géodatabases de fichiers), simplement parce que SQL est un paradigme standard dans les technologies de l'information.


A propos de la jointure des attributs d'entités par leur emplacement

Souvent, ce qui est le plus intéressant dans une carte, ce ne sont pas les couches individuelles, mais les relations entre les entités de ces couches. Par exemple, supposons que vous vouliez dire aux clients où ils peuvent trouver la succursale la plus proche de votre entreprise, ou que vous vouliez comparer différentes espèces sauvages avec des informations sur les habitats dans lesquels elles vivent. Ces types de requêtes peuvent être répondues avec une jointure spatiale.

Une jointure spatiale joint les attributs de deux couches en fonction de l'emplacement des entités dans les couches. Comme pour joindre deux tables en faisant correspondre des valeurs d'attribut dans un champ, une jointure spatiale ajoute les attributs d'une couche à une autre.

Vous pouvez ensuite utiliser les informations supplémentaires pour interroger vos données de nouvelles manières. Bien que vous puissiez également sélectionner des entités dans une couche en fonction de leur emplacement par rapport à une autre couche, une jointure spatiale fournit une association plus permanente entre les deux couches car elle crée une nouvelle couche contenant les deux ensembles d'attributs.


Nombres

Vous pouvez stocker des nombres dans l'un des quatre types de données numériques :

  • Entier court
  • Entier long
  • Flottant (nombres à virgule flottante simple précision)
  • Double (nombres à virgule flottante double précision)

En choisissant le type de données, considérez d'abord le besoin de nombres entiers par rapport aux nombres fractionnaires. Si vous avez juste besoin de stocker des nombres entiers, tels que 12 ou 12 345 678, spécifiez un entier court ou long. Si vous devez stocker des nombres fractionnaires comportant des décimales, tels que 0,23 ou 1234,5678, spécifiez un nombre flottant ou un double.

Deuxièmement, lorsque vous choisissez entre un entier court ou long ou entre un flottant ou un double, choisissez le type de données qui prend le moins d'espace de stockage. Cela minimise non seulement la quantité de stockage requise, mais améliore également les performances. Si vous devez stocker des entiers entre -32 768 et 32 ​​767 uniquement, spécifiez le type de données entier court, car il n'occupe que 2 octets, alors que le type de données entier long en occupe 4. Si vous devez stocker des nombres fractionnaires entre -3,4E38 et 1.2E38 uniquement, spécifiez le type de données float, car il occupe 4 octets, tandis que le type de données double en prend 8. Le tableau suivant répertorie les types de données, leurs plages et les exigences de stockage. Les plages répertoriées concernent les géodatabases fichier et personnelles. Les plages diffèrent légèrement dans les bases de données et les géodatabases d'entreprise, de groupe de travail et de bureau.

Valeurs numériques sans valeurs fractionnaires dans des valeurs codées d'une plage spécifique

Valeurs numériques sans valeurs fractionnaires dans une plage spécifique

Float (nombre à virgule flottante simple précision)

environ -3,4E38 à 1,2E38

Valeurs numériques avec des valeurs fractionnaires dans une plage spécifique

Double (nombre à virgule flottante double précision)

environ -2,2E308 à 1,8E308

Valeurs numériques avec des valeurs fractionnaires dans une plage spécifique

  • Flotte ou double dans une base de données ou une géodatabase d'entreprise
  • Entiers courts dans Oracle
  • Entiers longs dans IBM Db2, IBM Informix ou Oracle

La spécification de la précision et de l'échelle vous permet de restreindre la plage de valeurs et de formats de nombres qu'un champ peut accepter, vous offrant ainsi un meilleur contrôle. Par exemple, si vous spécifiez un flottant avec une précision de 4 et une échelle de 2, le champ accepte 12.34 (ou 12.3 ou 12). Si vous entrez 12.345 dans le champ, un message d'erreur s'affiche, car cela dépasse le nombre maximum de chiffres et de décimales autorisés. En revanche, si vous spécifiez un flottant avec une précision de 5 et une échelle de 3, le champ vous permet de saisir 12.345, 12.34 ou 12.3.

Les types de données et leurs valeurs de précision et d'échelle possibles que vous pouvez définir dans ArcGIS Desktop sont répertoriés dans le tableau suivant. Utilisez ce tableau pour vous aider à choisir le type de données, la précision et l'échelle :

*Les entiers courts dans toutes les autres bases de données sont créés avec une précision de 5 et une échelle de 0.

**Les entiers longs dans Microsoft SQL Server et PostgreSQL sont créés avec une précision de 10 et une échelle de 0.

Vous trouverez ci-dessous des exemples de plages de numéros et la manière dont vous pouvez les stocker dans une base de données ou une géodatabase d'entreprise, de groupe de travail ou de bureau :

*Les nombres négatifs nécessitent une précision supplémentaire pour stocker le signe négatif.

Les ordinateurs ne peuvent stocker qu'un nombre limité de chiffres, en fonction de l'espace de stockage alloué. Les champs de type de données double dans les bases de données et les géodatabases peuvent stocker avec précision des nombres contenant jusqu'à 15 chiffres uniquement, car il s'agit du nombre le plus long pouvant tenir dans 8 octets d'espace de stockage. Les nombres qui ont plus de chiffres que cela sont arrondis et stockés dans un format similaire à la notation scientifique, ce qui en fait des nombres approximatifs uniquement. Par exemple, si vous saisissez le nombre à 20 chiffres 12 345 678 901 234 567 890, il est arrondi et stocké sous le numéro à 15 chiffres 1.23456789012346E+19. La valeur codée à la fin, E+19, définit l'emplacement de la virgule décimale.

Les flotteurs dans les géodatabases fichier et personnelles peuvent stocker avec précision des nombres contenant jusqu'à 6 chiffres uniquement. Par exemple, vous ne pouvez pas stocker le nombre 123 456,7 précisément dans un champ flottant, car ce nombre contient plus de six chiffres. Vous pouvez saisir le nombre dans un champ flottant dans un fichier ou une géodatabase personnelle, mais il sera arrondi à 123 457, un nombre contenant les 6 chiffres autorisés. Si vous avez besoin de stocker ce numéro avec précision, vous pouvez le stocker dans un double champ. Les champs flottants des géodatabases et bases de données d'entreprise, de groupe de travail et de bureau ne vous permettent pas d'entrer plus de chiffres que la précision du champ, de sorte qu'aucun arrondi n'est effectué.

Un champ de texte représente une série de symboles alphanumériques. Cela peut inclure des noms de rue, des propriétés d'attribut ou d'autres descriptions textuelles. Une alternative à la répétition d'attributs textuels dans une géodatabase consiste à établir une valeur codée. Une description textuelle serait codée avec une valeur numérique. Par exemple, vous pouvez coder les types de routes avec des valeurs numériques en affectant 1 aux routes pavées améliorées, 2 aux routes en gravier, etc. Cela a l'avantage d'utiliser moins d'espace de stockage dans la géodatabase, cependant, les valeurs codées doivent être comprises par l'utilisateur des données. Si vous définissez vos valeurs codées dans un domaine de valeurs codées dans la géodatabase et associez le domaine au champ d'entiers stockant vos codes, la géodatabase affiche la description textuelle lorsque la table est affichée dans ArcGIS Desktop .

Les caractères utilisés pour le texte varient selon la langue. Pour permettre au texte de se convertir plus facilement entre les langues, ArcGIS utilise Unicode pour encoder les caractères.


Quoi de mieux pour votre application Big Data, SQL ou NoSQL ?

L'une des décisions critiques auxquelles sont confrontées les entreprises qui se lancent dans des projets Big Data est la base de données à utiliser, et souvent cette décision oscille entre SQL et NoSQL. SQL a des antécédents impressionnants, une grande base installée, mais NoSQL réalise des gains impressionnants et compte de nombreux partisans. Nous avons posé la question à des experts des deux camps.

Le directeur technique de VoltDB affirme que SQL a déjà gagné ses galons dans les grandes organisations et que le big data n'est qu'un travail de plus que ce pilier peut assumer. Voir le débat

Le PDG de Couchbase affirme que NoSQL est une alternative viable et, en fait, préférable pour le Big Data sur de nombreux fronts, en particulier en ce qui concerne l'évolutivité. Voir le débat

SQL a fait ses preuves et toujours florissant

Le langage de requête structuré (SQL) est un gagnant éprouvé qui a dominé pendant plusieurs décennies et est actuellement investi de manière agressive par des entreprises et des organisations de Big Data telles que Google, Facebook, Cloudera et Apache.

Une fois qu'une technologie devient aussi dominante que SQL, les raisons de son ascendant sont parfois oubliées. SQL gagne grâce à une combinaison unique de points forts :

  1. SQL permet une interaction accrue avec les données et permet de poser un large éventail de questions par rapport à une conception de base de données unique. C'est essentiel, car les données qui ne sont pas interactives sont essentiellement inutiles, et des interactions accrues conduisent à de nouvelles perspectives, de nouvelles questions et des interactions futures plus significatives.
  2. SQL est standardisé, ce qui permet aux utilisateurs d'appliquer leurs connaissances sur tous les systèmes et de prendre en charge les modules complémentaires et les outils tiers.
  3. SQL évolue, est polyvalent et éprouvé, résolvant des problèmes allant des transactions rapides orientées écriture à l'analyse approfondie à forte intensité d'analyse.
  4. SQL est orthogonal à la représentation et au stockage des données. Certains systèmes SQL prennent en charge JSON et d'autres formats d'objets structurés avec de meilleures performances et plus de fonctionnalités que les implémentations NoSQL.

Bien que NoSQL ait généré du bruit ces derniers temps, SQL continue de gagner sur le marché et continue de gagner des investissements et de l'adoption dans l'ensemble des problèmes de Big Data.

Le terme « NoSQL » est ambigu, mais pour cette discussion, j'utilise la définition NoSQL du Dr Rick Cattell pour signifier « des systèmes qui fournissent des opérations simples telles que le stockage clé/valeur ou des enregistrements et index simples, et qui se concentrent sur l'évolutivité horizontale pour ces opérations simples. "

Il est clair que les nombreuses nouvelles bases de données disponibles ne se ressemblent pas toutes – et reconnaître à quel point l'ADN derrière chacune aide et entrave la résolution de problèmes est la clé du succès. Les fonctionnalités clés de NoSQL le rendent plus approprié pour une utilisation dans des ensembles de problèmes spécifiques. Par exemple, les bases de données graphiques sont mieux adaptées aux situations où les données sont organisées par relations plutôt que par ligne ou document, et les systèmes de recherche de texte spécialisés doivent être considérés comme appropriés dans les situations nécessitant une recherche en temps réel lorsque les utilisateurs saisissent des termes.

Ici, je vais souligner les avantages importants et la différenciation des systèmes SQL par rapport aux magasins d'objets clé/valeur simples et JSON qui n'innovent pas au-delà du format de stockage et de l'évolutivité.

* SQL permet l'interaction. SQL est un langage de requête déclaratif. Les utilisateurs déclarent ce qu'ils veulent (par exemple, afficher les géographies des principaux clients au cours du mois de mars pour les cinq années précédentes) et la base de données assemble en interne un algorithme et extrait les résultats demandés. En revanche, l'innovation de programmation NoSQL MapReduce est une technique de requête procédurale. MapReduce demande à l'utilisateur non seulement de savoir ce qu'il veut, mais aussi de lui indiquer comment produire la réponse.

Cela peut sembler une différence technique inintéressante, mais c'est essentiel pour deux raisons : Premièrement, les requêtes SQL déclaratives sont beaucoup plus faciles à créer via des outils graphiques et des générateurs de rapports pointer-cliquer. Cela ouvre l'interrogation de la base de données aux analystes, opérateurs, gestionnaires et autres personnes ayant des compétences de base en dehors de la programmation logicielle. Deuxièmement, faire abstraction de quoi et de comment permet au moteur de base de données d'utiliser des informations internes pour sélectionner l'algorithme le plus efficace. Modifiez la disposition physique ou l'indexation de la base de données et un algorithme optimal sera toujours calculé. Dans un système procédural, un programmeur doit revoir et reprogrammer le mode d'origine. Ceci est coûteux et source d'erreurs.

Le marché comprend cette différence cruciale. En 2010, Google a annoncé une implémentation SQL pour compléter MapReduce, motivée par la demande des utilisateurs internes. Plus récemment, Facebook a publié Presto, une implémentation SQL pour interroger ses clusters HDFS pétaoctets. Selon Facebook : « Alors que notre entrepôt atteignait l'échelle du pétaoctet et que nos besoins évoluaient, il est devenu évident que nous avions besoin d'un système interactif optimisé pour une faible latence des requêtes. » De plus, Cloudera construit Impala, une autre implémentation SQL au-dessus de HDFS. Tous ces éléments sont des avancées par rapport à Hive, une façade SQL de longue date et largement adoptée pour Hadoop.

* SQL est standardisé. Bien que les fournisseurs se spécialisent parfois et introduisent des dialectes dans leur interface SQL, le noyau de SQL est bien standardisé et des spécifications supplémentaires, telles que ODBC et JDBC, fournissent des interfaces stables largement disponibles aux magasins SQL. Cela permet à un écosystème d'outils de gestion et d'opérateur d'aider à concevoir, surveiller, inspecter, explorer et créer des applications sur les systèmes SQL.

Les utilisateurs et programmeurs SQL peuvent donc réutiliser leurs connaissances sur les API et l'interface utilisateur sur plusieurs systèmes backend, réduisant ainsi le temps de développement des applications. La normalisation autorise également des outils tiers déclaratifs d'extraction, de transformation et de chargement (ETL) qui permettent aux entreprises de faire circuler des données entre les bases de données et entre les systèmes.

* Échelles SQL. Il est absolument faux de supposer que SQL doit être sacrifié pour gagner en évolutivité. Comme indiqué, Facebook a créé une interface SQL pour interroger des pétaoctets de données. SQL est tout aussi efficace pour exécuter des transactions ACID incroyablement rapides. L'abstraction que SQL fournit à partir du stockage et de l'indexation des données permet une utilisation uniforme des problèmes et des tailles d'ensembles de données, permettant à SQL de s'exécuter efficacement sur des magasins de données répliqués en cluster. L'utilisation de SQL comme interface est indépendante de la construction d'un cloud, d'une échelle ou d'un système HA, et il n'y a rien d'inhérent à SQL qui interdit ou limite la tolérance aux pannes, la haute disponibilité et la réplication. En fait, tous les systèmes SQL modernes prennent en charge l'évolutivité horizontale, la réplication et la tolérance aux pannes compatibles avec le cloud.

* SQL prend en charge JSON. Il y a plusieurs années, de nombreux systèmes SQL ont ajouté la prise en charge des documents XML. Désormais, alors que JSON devient un format d'échange de données populaire, les fournisseurs SQL ajoutent également la prise en charge du type JSON. Il existe de bons arguments en faveur de la prise en charge des types de données structurées étant donné les processus de programmation agiles d'aujourd'hui et les exigences de disponibilité de l'infrastructure exposée au Web. Oracle 12c, PostgreSQL 9.2, VoltDB et d'autres prennent en charge JSON - souvent avec des références de performances supérieures aux magasins JSON NoSQL « natifs ».

SQL continuera à gagner des parts de marché et continuera de voir de nouveaux investissements et implémentations. Les bases de données NoSQL offrant des langages de requête propriétaires ou une sémantique clé-valeur simple sans différenciation technique plus profonde sont dans une position difficile. Les systèmes SQL modernes atteignent ou dépassent leur évolutivité tout en prenant en charge une sémantique de requête plus riche, des bases d'utilisateurs établies et formées, une large intégration de l'écosystème et une adoption en profondeur des entreprises.

Betts est CTO chez VoltDB et l'un des premiers développeurs du produit commercial de VoltDB. VoltDB fournit la base de données opérationnelle la plus rapide au monde, offrant un traitement de données à grande vitesse et des analyses en mémoire en temps réel dans un système de base de données unique. VoltDB est une base de données relationnelle qui offre aux organisations une capacité sans précédent à créer des applications ultra-rapides capables d'extraire des informations à partir d'énormes volumes de données dynamiques et de permettre une prise de décision en temps réel. Les organisations des marchés tels que les télécommunications, les services financiers, les réseaux, l'énergie et le commerce électronique utilisent VoltDB pour maximiser la valeur commerciale des données à chaque interaction. VoltDB est une société privée avec des bureaux à Bedford, Mass. et Santa Clara, Californie.

NoSQL est meilleur pour vos applications Big Data

NoSQL est de plus en plus considéré comme une alternative viable aux bases de données relationnelles, en particulier pour les applications Big Data, car de plus en plus d'entreprises reconnaissent que le fonctionnement à grande échelle est mieux réalisé sur des clusters de serveurs standard. De plus, un modèle de données sans schéma est souvent meilleur pour la variété et le type de données capturées et traitées aujourd'hui.

Lorsque nous parlons de Big Data dans l'espace NoSQL, nous faisons référence aux lectures et écritures à partir de bases de données opérationnelles, c'est-à-dire au traitement des transactions en ligne avec lesquelles les gens interagissent et s'engagent quotidiennement (par exemple, avoir les Big Data nécessaires pour réserver un vol en ligne). Les bases de données opérationnelles ne doivent pas être confondues avec les bases de données analytiques, qui examinent généralement une grande quantité de données et collectent des informations à partir de ces données (par exemple, disposer des Big Data nécessaires pour savoir combien de personnes réserveront un vol un jour donné).

Alors que les Big Data des bases de données opérationnelles peuvent ne pas sembler aussi analytiques lorsqu'elles effleurent la surface, les bases de données opérationnelles hébergent généralement de grands ensembles de données avec un très grand nombre d'utilisateurs qui accèdent constamment aux données pour exécuter des transactions en temps réel. L'échelle à laquelle les bases de données doivent fonctionner pour gérer le Big Data explique la nature critique de NoSQL, et donc pourquoi NoSQL est essentiel pour les applications Big Data.

NoSQL est essentiel pour l'évolutivité

Chaque fois que l'industrie technologique connaît un changement fondamental dans les développements matériels, il y a un point d'inflexion. Dans l'espace des bases de données, le passage des architectures scale-up aux architectures scale-out est ce qui a alimenté le mouvement NoSQL. Les bases de données relationnelles, y compris celles des géants Oracle et IBM, prennent de l'ampleur. C'est-à-dire qu'il s'agit de technologies centralisées de partage de tout qui ne peuvent évoluer que par l'ajout de matériel plus coûteux.

À l'inverse, les bases de données NoSQL ont été conçues dès le départ pour être des technologies distribuées et évolutives. Ils utilisent un ensemble distribué de nœuds, appelé cluster, pour fournir une capacité de mise à l'échelle hautement élastique qui permet aux utilisateurs d'ajouter des nœuds pour gérer la charge à la volée.

Une approche de mise à l'échelle distribuée finit également généralement par être moins chère que l'alternative de mise à l'échelle. Ceci est dû au fait que les serveurs volumineux, complexes et tolérants aux pannes sont coûteux à concevoir, à construire et à prendre en charge. Les coûts de licence des bases de données relationnelles commerciales peuvent également être prohibitifs car ils sont facturés en fonction d'un seul serveur à l'esprit. Les bases de données NoSQL, quant à elles, sont généralement open source, tarifées pour fonctionner sur un cluster de serveurs et sont relativement peu coûteuses.

NoSQL est essentiel pour la flexibilité

Les modèles de données relationnelles et NoSQL sont très différents. Le modèle relationnel prend les données et les sépare en de nombreuses tables interdépendantes qui contiennent des lignes et des colonnes. Ces tables se référencent mutuellement via des clés étrangères qui sont également stockées dans des colonnes.

Lorsqu'un utilisateur doit exécuter une requête sur un ensemble de données, les informations souhaitées doivent être collectées à partir de nombreuses tables - souvent des centaines dans les applications d'entreprise d'aujourd'hui - et combinées avant de pouvoir être fournies à l'application. De même, lors de l'écriture de données, l'écriture doit être coordonnée et effectuée sur de nombreuses tables. Lorsque les données sont relativement peu volumineuses et qu'elles entrent dans une base de données à faible vitesse, une base de données relationnelle est généralement capable de capturer et de stocker les informations. Mais les applications d'aujourd'hui reposent souvent sur l'attente que d'énormes volumes de données peuvent être écrits (et lus) à des vitesses proches du temps réel.

Les bases de données NoSQL ont un modèle très différent. À la base, les bases de données NoSQL sont vraiment « NoREL », ou non relationnelles, ce qui signifie qu'elles ne s'appuient pas sur les tables et les liens entre les tables pour stocker et organiser les informations. Par exemple, une base de données NoSQL orientée document prend les données que vous souhaitez stocker et les agrège dans des documents au format JSON. Chaque document JSON peut être considéré comme un objet à utiliser par votre application. Un document JSON peut prendre toutes les données stockées dans une ligne couvrant 25 tables d'une base de données relationnelle et les agréger en un seul document/objet.

L'agrégation de ces informations peut entraîner une duplication d'informations, mais comme le stockage n'est plus un problème de coût, la flexibilité du modèle de données qui en résulte, la facilité de distribution efficace des documents résultants et les améliorations des performances de lecture et d'écriture en font un compromis facile pour le Web. applications basées.

NoSQL est essentiel pour les applications Big Data

Les données sont de plus en plus faciles à saisir et à accéder via des tiers, y compris les sites de médias sociaux. Les informations personnelles de l'utilisateur, les données de localisation géographique, le contenu généré par l'utilisateur, les données d'enregistrement des machines et les données générées par les capteurs ne sont que quelques exemples de la gamme en constante expansion capturée. Les entreprises s'appuient également sur le Big Data pour piloter leurs applications critiques. Dans l'ensemble, les organisations se tournent vers les bases de données NoSQL car elles sont particulièrement adaptées à ces nouvelles classes de données émergentes aujourd'hui.


Combien coûte le SIG ?

Alors je t'entends penser :

Je peux dire que cela ne s'est jamais produit, mais vous serez heureux de savoir que la plupart d'entre nous qui bénéficient du SIG possèdent toujours deux reins fonctionnels !

Il existe d'excellents outils gratuits et open source disponibles, de nombreux outils de bureau et Web abordables (Mango, nudge nudge, wink wink) et également des solutions très coûteuses au sommet qui répondent à des cas d'utilisation très spécialisés.

Plus tard dans le livre, nous examinerons de manière plus approfondie les différentes solutions logicielles SIG open source et payantes, à la fois sur le bureau et sur le Web.

Dans la plupart des cas, le coût principal du SIG sera en temps plutôt qu'en licence de logiciel. Ce qui nous amène parfaitement à la question suivante.


Types de bases de données

Il existe de nombreux types de bases de données. La meilleure base de données pour une organisation spécifique dépend de la façon dont l'organisation a l'intention d'utiliser les données.

Bases de données relationnelles

Bases de données orientées objet

Bases de données distribuées

Entrepôts de données

Bases de données NoSQL

Bases de données graphiques

Ce ne sont là que quelques-uns des quelques dizaines de types de bases de données utilisés aujourd'hui. D'autres bases de données, moins courantes, sont adaptées à des fonctions scientifiques, financières ou autres très spécifiques. En plus des différents types de bases de données, les changements dans les approches de développement technologique et les avancées spectaculaires telles que le cloud et l'automatisation propulsent les bases de données dans des directions entièrement nouvelles. Certaines des bases de données les plus récentes incluent

Bases de données open source

Bases de données cloud

Base de données multimodèle

Base de données de documents/JSON

Bases de données autonomes


Y a-t-il une différence entre une base de données géospatiale et une base de données standard ?

Oui, il y en a – bien qu'ils soient les mêmes à la base.

Maintenant, juste pour être clair, les géodatabases peuvent être stockées dans une base de données géospatiale.

Si vous regardez les types de graphique de géodatabase ci-dessus, vous découvrirez que les géodatabases d'entreprise dépendent de bases de données géospatiales comme Oracle, Microsoft SQL Server, IBM Db2, PostgreSQL ou SAP HANA. Une géodatabase peut s'appuyer sur une base de données géospatiale, mais cela inclura également le stockage des tables définies par Esri. Il n'est pas totalement libre pour l'utilisateur de faire ses propres choix, et c'est ce qui différencie une géodatabase d'une base de données géospatiale.


Travailler avec des types approximatifs

Il est très important de se rappeler que ce type de données numériques SQL sacrifie la précision pour la plage, d'où le nom approximatif.

Dans les calculs, les types approximatifs peuvent vous donner des résultats étranges - comme 204.000000056 où le résultat exact devrait être 204. Si vous créez votre base de données pour une application d'ingénierie ou scientifique, les types de données flottants devraient convenir. Il existe également une différence de vitesse si vous effectuez un nombre exceptionnellement élevé de calculs compliqués (par exemple, des fonctions trigonométriques, etc.), les types flottants devraient être beaucoup plus rapides que les autres types de données numériques. D'un autre côté, si vous travaillez sur une application financière, bancaire ou autre, l'utilisation de la représentation décimale est plus appropriée.

Le catalogue de types de données numériques SQL n'est pas limité à ceux liés aux nombres entiers et décimaux. Ils reflètent la nécessité de stocker les données de manière sûre, prévisible et utilisable. Comme pour tout langage de programmation, ils nous rappellent l'aspect informatique des bases de données et du SQL.


Vulnérabilités d'injection SQL aveugle

De nombreuses instances d'injection SQL sont des vulnérabilités aveugles. Cela signifie que l'application ne renvoie pas les résultats de la requête SQL ou les détails des erreurs de base de données dans ses réponses. Des vulnérabilités aveugles peuvent toujours être exploitées pour accéder à des données non autorisées, mais les techniques impliquées sont généralement plus compliquées et difficiles à mettre en œuvre.

Selon la nature de la vulnérabilité et la base de données impliquée, les techniques suivantes peuvent être utilisées pour exploiter les vulnérabilités d'injection SQL aveugle :

  • Vous pouvez modifier la logique de la requête pour déclencher une différence détectable dans la réponse de l'application en fonction de la véracité d'une seule condition. Cela peut impliquer l'injection d'une nouvelle condition dans une logique booléenne ou le déclenchement conditionnel d'une erreur telle qu'une division par zéro.
  • Vous pouvez déclencher de manière conditionnelle un délai dans le traitement de la requête, ce qui vous permet de déduire la véracité de la condition en fonction du temps que met l'application pour répondre.
  • Vous pouvez déclencher une interaction réseau hors bande à l'aide des techniques OAST. Cette technique est extrêmement puissante et fonctionne dans des situations où les autres techniques ne le font pas. Souvent, vous pouvez directement exfiltrer les données via le canal hors bande, par exemple en plaçant les données dans une recherche DNS pour un domaine que vous contrôlez.

Lire la suite


WGS84 contre NAD83

Question: Quelle est la différence entre les références WGS84 et NAD83 ? Si je crée une carte à l'aide de la référence WGS84, puis-je étiqueter la carte à la fois comme WGS84 et NAD83 ? Ou cela dépend-il de l'échelle à laquelle se trouve la carte ?

Je pensais avoir entendu qu'ils ne sont plus interchangeables, mais j'ai récemment vu une carte étiquetée WGS84/NAD83 pour son datum horizontal. Merci pour toute précision.

Réponse: Il existe un certain nombre de différences entre le NAD83 et le système de référence WGS84. L'un est l'ellipsoïde de référence. Le système de référence nord-américain de 1983 (NAD83) utilise l'ellipsoïde du système de référence géodésique (GRS80) tandis que le système géodésique mondial de 1984 (WGS84) utilise l'ellipsoïde WGS 84. Les dimensions de ces ellipsoïdes diffèrent légèrement. Pour plus d'informations, reportez-vous à Principes de base de la projection que les professionnels du SIG doivent connaître.

Une carte n'aura qu'un seul système de coordonnées, soit géographique, soit projeté dans la terminologie de notre logiciel. Par exemple, la "projection WGS84" est une projection géographique. Une projection UTM est une projection projetée. L'un ou l'autre n'utilisera qu'une seule donnée. Cependant, les données sur la carte pourraient provenir de plusieurs sources, toutes avec des projections et donc des données uniques.

La carte que vous avez vue n'a pas pu être dessinée en utilisant à la fois les datums WGS84 et NAD83. Cela dit, je note que certaines données GPS sont auto-décrites comme « NAD83/WGS84 » en utilisant l'avertissement selon lequel « les différences entre ces deux données pour l'Amérique du Nord ne sont pas perceptibles avec un équipement GPS de qualité cartographique/GIS ou grand public. » C'est peut-être vrai, mais le cartographe ferait d'autres recherches pour en savoir plus. Par exemple, voici une explication que j'ai trouvée : « Pour les besoins de la discussion, chaque fois que vous entendez WGS84/NAD83, vous pouvez automatiquement supposer qu'il s'agit de NAD83. Dans ce document, nous désignerons WGS84/NAD83 ou NAD83 par WGS84/NAD83″. Le cartographe doit alors savoir bien faire remarquer sur la carte que la projection de la carte (en supposant qu'elle soit la même que les données GPS) utilise bien le référentiel NAD83. S'il ne s'agit pas du même que les données GPS, la définition de référence est intégrée dans la définition de projection.

Recherchez une entrée de blog à ce sujet dans un ou deux jours où j'espère rendre ces distinctions plus claires.


Voir la vidéo: Langage SQL: Instruction SELECT et la projection (Octobre 2021).