Professional Documents
Culture Documents
Azure Storage
Ecosystem: Overview
and Development with
Azure Blob Storage
Whenever I run an AZ-204 (Azure Developer Fundamentals) training
session, I always start with Azure Storage. Storage is not necessarily sexy,
and it’s not the first thing you often think about when getting ready to
study for an Azure exam. However, storage is the essential backbone to
pretty much anything you do in Azure.
Do you need to work with the Azure cloud shell? You’re going to need
a backing storage account. Would you like to host a virtual machine (VM)
in Azure? I bet you can already guess where your virtual disks are housed.
Would you like to create a Big Data pipeline that utilizes a data lake? How
about a simple Azure Function application? Perhaps you just need a place
to share documents quickly and easily, with versioning capabilities and
access restrictions. Maybe you would like to host a static website and/or a
CDN for your static web assets. These solutions, and many more, require
and/or leverage storage in some way.
4
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Along with the hierarchy, the URL for each service is important,
because the public-facing URL for storage will make some of your data (set
by you) available over HTTPS protocols.
Since the Azure Storage account must have a unique FQDN across all
of Azure, you likely won’t be able to create an account with a name such as
myStorage, since someone else has likely already used that name.
5
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
This would translate to https://mystorage.blob.core.windows.net.
With your FQDN, the pattern for accessing the URL is typically https://
your-account-name.storage-type.core.windows.net/some-resource,
where your-account-name is 3-24 lowercase characters that are either
a-z or 0-9 only. Figure 1-2 highlights how Azure will remind you when
your storage account name does not conform to the limitations of the
naming schema.
All storage accounts will contain access keys that can be used to
connect to the storage account via the Azure Storage Software Developer
Kit (SDK). Keys can be rotated. The connection string is a combination of
the unique FQDN for the account and the primary or secondary key (see
Figure 1-3).
6
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
7
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Figure 1-4. The four types of storage are highlighted in the left
navigation menu on the storage account
How you utilize storage is entirely up to you and your team. It’s
important to note that there really are few restrictions when it comes to
how you structure your storage account. You can have one account for
container storage, another for table storage, and another for file or queue
storage. You can also have one storage account that has some combination
of one or more of each type.
The bulk of the AZ-204 material covers developing solutions against
Azure Blob Storage. For the most part, therefore, you’ll home in on blob
storage in this review, but it’s still a good idea to start with a look at each of
the four types of storage, so you can ascertain the correct type of storage
for any solution that might be presented, either on real-world projects or
on the exam.
8
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Azure Container (Blob) Storage
As a developer, a great deal of the work you do with storage will likely be
working with code against container (blob) storage. As mentioned earlier,
a binary large object (blob) is typically an object that has been serialized
to binary, leveraged as a byte array (byte[]), and then uploaded to or
retrieved from storage as an immutable blob. Later in the chapter, you
learn how to work directly with blob storage using code, and a challenge
will follow for you to implement a solution utilizing C# and Azure Blob
Storage.
In addition to understanding what a blob is, it is important to know
how Azure Blob Storage stores different types of blobs, because the way
blobs are stored determines the maximum size of the blob and how you
can interact with the blob. There are three types of blob storage that you
can select, and each type is important for various workloads.
Finally, it is important to understand that as you create a storage
account, you also need to create a container in which to store your blobs.
You can have many containers in a storage account, with different access
levels and different default tiers. (Figure 1-5 shows a potential storage
account with multiple containers.)
9
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Figure 1-5. The storage account can have multiple containers. Each
container can have its own public or private access
Block Blobs
The main type of storage you’ll work with in typical code for interaction
with Azure Blob Storage is the block blob. The blob itself that you upload
is broken into chunks called blocks. This breaking up of the data is a
mechanism to allow the throughput of the blob to be optimized over the
network.
10
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
When you upload a blob to Azure Blob Storage, you can choose the
size of the blocks, which can be anywhere from 64 Kilobytes (KB) in size to
100 Megabytes (MB) in size. The typical default for blocks is 4 Mebibytes
(MiB) in size. The maximum number of blocks that can be utilized is
50,000. Therefore, if you choose a size of 64 KB, the maximum size of your
blob in Azure Blob Storage is 64*50,000, which is 3,200,000 KB (or 3.2 GB).
If you choose the maximum size of 100 MiB, you get 100 MiB* 50,000,
which is 5,000,000 MiB, which translates to around 4.75 TiB (Tebibyte).
Recent updates to some tiers and preview versions put the block
maximum size to up to 4000 MiB, making the maximum size a massive
190.7 TiB. If you want more information about these limits, you can read
more at https://docs.microsoft.com/rest/api/storageservices/
Understanding-Block-Blobs--Append-Blobs--and-Page-Blobs.
The typical use case for block blobs will be for most of your typical
objects that you store in the container. This can include images, videos,
documents, and serialized objects. Figure 1-6 highlights some options
when uploading a block blob.
11
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Figure 1-6. Creation of a block blob with options selected for the
block size and initial tier. Callouts also note the ability to set a
folder path
Append Blobs
The second type of blob storage that you can use is the append blob. The
append blob is also a block blob but is optimized for only adding blocks to
the end of the blob.
12
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
This end-only optimization creates an ideal scenario for utilization
when writing to a log file, where you are continuously writing new
information that is appended, and the original information is unchanged.
The append blob cannot modify the existing blobs, as it is optimized
only to modify the blob by appending additional blobs to the end of the blob.
Page Blobs
Page blobs are a specialized storage type that is optimized for storing
virtual disks. Typically, at this point, when you provision a new VM, you
will utilize a managed disk and not worry about any of this underlying
architecture, as Azure will now manage the storage of the disk for you.
However, you may encounter legacy VMs in Azure or scenarios where an
unmanaged disk was provisioned into a storage account. In any scenario,
to be correctly applied, the storage account for the disk, whether managed
or managed, should be stored as a page blob.
It is important to note that page blobs are stored in 512-byte pages.
When writing to page blobs, the write operations are happening in
512-byte chunks and can utilize an offset to hit the specific pages. The
maximum simultaneous write operation is 4 TiB. The maximum size for a
page blob is 8 TiB.
Managed disks are typically solid-state drives (SSDs) and are going to
reside in the premium tier to maximize throughput. An unmanaged disk
can leverage standard storage or premium storage, depending on your
need for throughput and the type of hard drive that is backing the compute
for your machine.
13
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
With a table storage account, you can utilize code to read and write
and work with structured NoSQL data, which can be referenced by key
and/or cluster index consisting of the primary key and row key. There are
some great advantages to this approach and also some limitations. You’ll
take a closer look at the capabilities of the Table API for Cosmos DB in the
next chapter, where you learn about a few of the benefits of switching to
the Table API.
Should you already have a table storage account or just want to avoid
using Cosmos DB, the good news is that now there is an SDK that lets you
easily work against either table storage or the table API for Cosmos DB.
Good candidates for utilization of table storage include storing simple
settings for users in your applications and using table storage to
de-normalize data and quickly and easily make this data available to many
applications.
Table storage is scalable, but you won’t get the robust global replication
you might need unless you move to Cosmos DB. In high-availability/
high-throughput scenarios, you can make a read-only replica of your table
storage in a secondary region, but you will only be able to write to the
primary region.
The URL for table storage will follow a common pattern that you’ll
see for each of the storage types. The Table Storage URL always looks as
follows:
https://<your-storage-account-name>.table.core.windows.
net/<table>
You’ll see the contrast to this in the next section for the Cosmos DB,
where table.core.windows.net becomes table.cosmosdb.Azure.com.
The hierarchy for table storage contains the top-level account,
followed by the table. Within the table, you will encounter the entities, and
within entities, properties. The properties are the NoSQL KVPs. When you
build your code, you will need to connect to the account with a connection
string, then leverage the table/entity/property.
14
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Entities in Azure Table Storage are limited to a maximum size of 1MB.
Each property will have some common properties and then the data
that can be anything you want it to be. The properties are a timestamp, a
row key, and a partition key.
15
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Azure Queue Storage
The third type of storage you need to be in command of is Azure Queue
Storage. As you learn more about cloud-native, microservices, and
serverless development, you will likely need a messaging solution to help
communicate among disparate components. One option for a messaging
solution is Azure Queue Storage. In a later chapter on messaging, you get a
chance to dive deeper into Azure Queue Storage and see how it compares
with the Service Bus Queue/Topic messaging service in Azure.
A couple of quick pieces of information about queue storage that you’ll
need to be aware of:
16
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Another important aspect of Azure File Storage is the fact that
Server Message Block 3.0 (SMB 3.0) protocols utilize it. This means that
any existing solution you have can easily be pointed at the Azure File
Storage solution and the code and/or settings you configured for existing
applications should just work. In addition to SMB 3.0, Azure File Storage
also utilizes the Network File System (NFS) protocol.
When you create your file storage, you’ll need to choose which
protocol you want to use, as you can’t utilize both in the same file storage
instance. You can, however, have side-by-side file storage implementations
in the same Azure Storage account.
Blob Storage
Table storage is covered in the next chapter and queue storage is covered
in Chapter 13. File storage is a bit outside of the scope of the AZ-204 Exam,
as file storage is typically more important for the administration and
solution architect paths. Therefore, the remainder of this chapter looks
exclusively at utilization of Azure Blob Storage, including how to work with
blob storage from C# code.
17
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Figure 1-7. The two choices for storage performance tier are
Standard and Premium
Standard Tier
In general, standard storage is adequate for workloads that do not need
a maximized throughput (low latency). For example, serving files and
storing documents are great candidates for a standard account.
Premium Tier
Workloads that require a lower latency or a private network will be better
served in a premium tier. Good use cases for a premium account include
storing and accessing SSD disks, streaming larger audio and video files
frequently, or building a private network endpoint to connect to storage
from other Azure resources over a private connection.
18
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
(four nines) for read operations. Additionally, cool and archive storage
have a lower SLA of just 99 (two nines) for everything but GRS-RA, and
GRS-RA has a guarantee of 99.9% (three nines) for read operations. Also
note that availability (SLA)—the ability to access the service in Azure—is
not the same thing as durability of the objects, which is the integrity of
the data without loss or corruption. Figure 1-8 shows the options for the
storage account. Note that the option for Read Access is a checkbox that is
only available when one of the geo-replication options is selected.
Figure 1-8. The options for storage data resiliency and redundancy
are presented, with GZRS-RA selected in this image
19
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Example scenarios where you might choose LRS are development and
test environments and any other solutions where high availability and
resiliency are not required. LRS guarantees at least 11 nines durability of
objects.
20
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Geo-Zone-Redundant Storage (GZRS)
Geo-Zone-Redundant Storage (GZRS) is the next step in resiliency and
availability. As you might expect at this point, GZRS is similar to ZRS, but
also includes the failover (secondary) region. In this scenario, the primary
region replicates the data across at least three data centers. The secondary
region is again implemented as LRS, and the data in the secondary region
is not available for read/write operations unless the secondary region is
temporarily made primary during regional failures. GZRS has a durability
of 16 nines.
21
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
the account. The storage account keys will work in either the primary or
the secondary region, so you can use this knowledge to configure your
applications to read from the secondary region.
22
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Hot Storage
Hot storage is an optimization for your blob that minimizes the cost for
access and throughput. Since throughput cost is optimized, in the hot tier,
the cost to store blobs is higher.
Consider a scenario where you have a document or image that will be
accessed frequently throughout the day by multiple applications and/or
users. This might include blobs like your web images, documents that are
frequently reviewed, and other important, highly visible storage assets.
In this scenario, since the blob needs to be accessed often, your
maximized cost option is to keep the blob in hot storage.
Cool Storage
Cool storage is an optimization for your blob that minimizes the cost of
storage while allowing access to the blob. Since the storage is optimized,
blobs in the cool tier are going to cost more to access. For this reason, you
want to utilize cool storage when your document may have limited use or
access but still needs to be readily available.
Consider a scenario where you have generated a monthly billing report
and you need to keep the billing reports available even when they aren’t
utilized much after the first 30 days. In this scenario, users may need to
review the document for historical purposes, but it’s unlikely that the
document would be reviewed more than once or twice in a longer period
of time. In this scenario, cool storage would be a great solution.
Archive Storage
Archive storage is for the blobs you need to keep but don’t need to access
without special reasons for that access. There is no direct access to an
archive storage blob. To review or utilize the blob, you must first hydrate
the storage blob item back to the cool or hot storage tier. The hydration of a
23
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
blob from the archive tier to either the cool or hot tier can take a significant
amount of time. Prior to recent releases, this rehydration period was up
to 24 hours. Now there are options whereby you can pay more to get the
data more quickly. If you create a high-priority request and your data is
less than 10 GB, you may see it within an hour. For a standard request, you
should expect around 15 hours before rehydration is completed. You have
no other control other than to place the request for rehydration.
Scenarios for the use of archive storage include legal holds for
important documents to keep in case you need to validate a statement of
work or some other legal arbitration. Additional reasons to keep blobs in
archive storage could be backup operations and other automations that
ensure that you never lose state or data from a point-in-time, while also
maximizing your value for your storage expenditures.
As noted, archive is not available as a default setting. However, when
you upload a blob, you can set its access level to any tier, including archive
(see Figure 1-10).
Figure 1-10. New blobs can be uploaded with any of the three
access tiers
24
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Automation of Tier Placement
When you upload a blob into storage, if you don’t set the tier, then the
default tier for the container will be used. Typically, the default tier will be
the hot tier. In many cases, you will likely want to automate the lifecycle
of blobs so that administrators or developers don’t waste time checking
and manually moving blobs across tiers. For this reason, Azure Storage
accounts have the ability to create lifecycle management rules.
Creating a lifecycle management rule allows the blob to be
automatically moved to a different tier. There are two conditions you can
use to check for automatic handling, which are if conditions based on
the last modified date or the created date. You can use one of these trigger
conditions with a date window of “more than x days ago” to automate the
handling of the blob. Figure 1-11 shows a lifecycle rule on the container
that moves blobs to cool storage after 30 days.
Figure 1-11. A lifecycle access rule for blobs in the storage container
automatically moves blobs to cool storage 30 days after creation
25
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Handling the blob involves one of three options, which are move to
cool storage, move to archive storage, or just delete the blob. Figure 1-12
shows the options when creating a rule.
Storage Access
Containers within your storage account can have either public or private
access. You can also set a container to be private by default but allow
specific blobs to have public access. When you create your storage
account, you can set the ability to prevent any public access to containers
and blobs. If you set the account level to private, there will be no option to
make blobs or containers available for anonymous public access.
As you create your account, you also have options to create the storage
account in a private network. When you place an account in a private
network, only resources within that network or with configured access
26
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
through that network can access the storage account. The traffic on a
storage account with private access utilizes the Azure backbone and is
therefore more secure. If you do not utilize a private network, then traffic
for your storage account will typically go over the public Internet. Although
communication is encrypted and storage at rest is encrypted, you will
likely want to put sensitive accounts on a private network.
All blobs stored in container storage have the same URL pattern. The
pattern is the name of your storage account, followed by the blob storage
common URL, and then any information to identify the blob. This URL
always looks as follows:
https://<your-storage-account-name>.blob.core.windows.
net/<optional-folder/<blob-detail>.<blob-extension>
27
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Figure 1-13. The options to allow public access and key access are
enabled by default during account creation
Public Access
As mentioned, when a storage account is created, as long as the option
to make containers public is allowed, containers can be set to a default
access level of public. When a container is public, all blobs in the container
are public. Typically, this is used in a scenario where you want to allow
anonymous read access to assets, such as images or videos for a website.
Private Access
In many scenarios you will want to ensure that blobs cannot be accessed
via anonymous requests. Setting private access will make sure that only
authorized users or applications can access your data.
As stated, the entire account can be locked into a private-only option
during creation, or you can ensure that access levels on a blob storage
container are set to private.
28
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Shared Access Signature (SAS) Tokens
As mentioned, when a container is set to private access, there are a couple
of ways to access the data. One way is to utilize the account keys and
connection information and then utilize code with the Azure Storage SDK
to access the data. Another way is to issue Shared Access Signature (SAS)
tokens. The SAS token can be issued on an individual basis or can be
issued per a shared access policy. Figure 1-14 calls out the left-nav menu
items for each type of token at the container level.
Figure 1-14. The left-nav menu contains links to create the SAS
tokens individually or create a policy that can issue and revoke
multiple tokens en masse
When you create a token, you have the option to set things like the
duration and specific rights for the token, such as read, write, and delete
(see Figure 1-15). Tokens can be issued at the single-blob level or the
29
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
container level. Single-blob tokens are useful for individual access to only
one blob. Container-level tokens allow access to all blobs in the container
with the permissions set during creation of the token.
30
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Individual (Ad Hoc) Tokens
Individual tokens can be for a single blob or can be issued for an entire
container. With an active token that has read access, anyone with the link
can access the blob(s) that are exposed by the token for read but cannot
modify them.
Individual (ad hoc) tokens are not manageable in Azure Storage
once they have been created. For this reason, the only way to invalidate
an active ad hoc token is to regenerate the key with which the token was
created.
Policy-issued Tokens
Policy-based tokens are valuable because they are not only going to
accomplish the access tasks as per any SAS token, but they are also issued
by a policy.
For this reason, if you have a lot of volatile tokens and you need to
rescind them for some reason, you can invalidate all tokens issued by
a policy. This is more powerful than individual tokens and can be safer
for business continuity for your customers, since keys don’t have to be
regenerated.
To create a token via a policy, you must first create the policy. Tokens
in the policy share lifecycle and access permissions. Once the policy is
created, return to the menu to issue tokens and, in the appropriate drop-
down menu, select the policy you want to apply. Figure 1-16 shows the
creation screen for creating a new access policy.
31
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Figure 1-16. Use the Access Policy menu to create a new policy for
issuing a group of SAS tokens
32
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
orking with Azure Storage from Code
W
Using the .Net SDK
The rest of this chapter is a summary of the code and operations you need
to be in command of in order to work with Azure Storage. You can find all
code shown in the source files, which are located in the GIT repository for
this book.
1. Connect to Azure.
33
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
The end result should be a new storage account in Azure. Navigate to
the Access Keys blade, as shown in Figure 1-17.
34
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
3. Implement a methodology to get the connection
string from a configuration file and place the
connection string in your user secrets.
Creating a Container
With the application created and ready to connect, you can use this simple
code to create a container named images:
35
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
{
if (containerItem.Name.Equals("notes"))
{
exists = true;
break;
}
}
Uploading a Blob
Leverage the SDK to upload your text file:
//upload
var path = "./notes/affirmations.txt";
var blobClient = containerClient.
GetBlobClient("affirmations.txt");
var fileBytes = File.ReadAllBytes(path);
var ms = new MemoryStream(fileBytes);
36
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Listing All the Blobs
To get a list of all the blobs in a container, use the following code:
//list blobs
exists = false;
foreach (var blob in containerClient.GetBlobs())
{
Console.WriteLine($"Blob {blob.Name} found!
{blob.Properties}");
if (blob.Name.Contains("affirmations.txt"))
{
exists = true;
}
}
Downloading a Blob
To download a blob from storage, use the following code:
//get blob
if (exists)
{
blobClient = containerClient.GetBlobClient
("affirmations.txt");
Console.WriteLine($"Blob {blobClient.Name} exists at
{blobClient.Uri}");
var downloadFileStream = new MemoryStream();
blobClient.DownloadTo(downloadFileStream);
var downloadFileBytes = downloadFileStream.ToArray();
using (var f = File.Create($"{Environment.
CurrentDirectory}/notes/affirmations-download.txt"))
37
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
{
f.Write(downloadFileBytes, 0, downloadFileBytes.
Length);
}
}
// metadata
foreach (var blob in containerClient.GetBlobs())
{
Console.WriteLine($"Blob {blob.Name} found!
{blob.Properties}");
if (blob.Name.Contains("affirmations.txt"))
{
//add metadata
blob.Metadata.Add("createdby", "yourname");
blob.Metadata.Add("reason", "success");
blob.Metadata.Add("filter", "important");
//review metadata
var metadata = blob.Metadata;
foreach (var key in metadata.Keys)
{
Console.WriteLine($"Metadata {key} has value
{metadata[key]}");
}
}
}
38
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
Deleting a Blob
To delete a blob, use the following code:
//delete blob
blobClient = containerClient.GetBlobClient("affirmations.txt");
blobClient.DeleteIfExists();
Deleting a Container
To delete a container, use the following code:
//delete container
containerClient.DeleteIfExists();
39
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
omplete the AZ-204: Develop Solutions
C
that Use Blob Storage Learning Path
To fully learn the material, I recommend taking the time to complete the
MS Learn modules for Azure Storage found here:
Chapter Summary
In this chapter, you learned about storage in Azure and how to utilize the
storage SDK to work with blobs in Azure Container Storage.
After working through this chapter, you should be on track to be in
command of the following concepts as you learn about Azure and prepare
for the AZ-204 Exam:
40
Chapter 1 AZURE STORAGE ECOSYSTEM: OVERVIEW AND DEVELOPMENT WITH
AZURE BLOB STORAGE
• Enable public and private access on blobs and
containers and work with SAS tokens and policies to
allow unique access to private blobs.
In the next chapter, you will learn about working with Cosmos DB and
Azure Table Storage for NoSQL data storage.
41
CHAPTER 2
Develop Solutions
That Use Cosmos DB
About two years ago, I started learning about Cosmos DB and all the
nuances that it contains. Even after all this time and an additional
certification (DP-420), Cosmos DB is still an incredibly difficult topic
to understand, and can be even more tricky to fully leverage correctly.
Learning Cosmos DB is especially difficult for those who, like me, have
been developing solutions utilizing relational database systems for more
than just a couple of years.
Truth be told, relational developers like me love the structure of
relations. We love the consistency of normalization and the ease of
building high-performing queries that get our data quickly and efficiently
to render to our clients. We are confident that our stored procedures are
the only tool we need to manipulate the data, and, on rare occasions, we
can even use a trigger if we have no other choice.
The good news is that some of these concepts do translate (in a way)
into Cosmos DB. The bad news is that most operations are contradictory to
how relational developers think about normalization and relational data,
and that can make the barrier to Cosmos DB even greater.
Cosmos DB has a top-level account (like a server), with one or more
databases, which store data in one or more containers (which you can
think of a bit like a table). Cosmos DB has an Atomicity, Consistency,
Isolation, and Durability (ACID) transaction capability that you can
implement with the Cosmos DB SDK. You can even write stored
procedures and triggers—albeit utilizing JavaScript as the development
language.
For all of these reasons, in this chapter, I take the approach that you are
fairly new to Cosmos DB and need to know how to utilize it effectively with
code (for this exam and for some actual projects). I also present some of
the major concepts around the optimization of these mysterious Request
Units (RUs), and how they play out in both your analysis of your data
and your overall cost for utilizing Cosmos DB. Even if you aren’t a non-
relational database developer by trade, this chapter will help position you
for the knowledge around development with Cosmos DB.
In addition to those things, we also look at the specific pieces you need
to be in command of for working with Azure Cosmos DB for the exam,
and we compare working with Cosmos DB to working with Azure Table
Storage.
44
Chapter 2 Develop Solutions That Use Cosmos DB
45
Chapter 2 Develop Solutions That Use Cosmos DB
46
Another random document with
no related content on Scribd:
pintle yoke, and top carriage, the trail, the wheels and axle. The gun
slides in recoil on the upper surface of the cradle and the cradle
contains the recoil controlling parts.
In the design of the carriage the constructional difficulty lies not so
much in preventing the carriage from recoiling but in preventing the
wheels from rising off the ground on the shock of discharge. The
force of the recoil of the gun, acting in the line of motion of the center
of gravity of the recoiling parts, tends to turn the carriage over
backwards about the point of the trail or center of the spade. This
force is resisted by the weight of the gun and carriage, which tends
to keep the wheels on the ground. The leverage with which the
overturning force acts is due to the distance of its line of action
above the center of the spade; the leverage with which the
overturning force acts is that due to the horizontal distance of the
center of gravity of the gun and carriage from the center of the
spade.
It follows that the steadiness of the carriage for a given muzzle
energy may be promoted by four factors.
(a) Increasing the weight of the gun and recoiling parts. This
reduces the recoil energy.
(b) Increasing the length of recoil allowed. This reduces the
overturning pull.
(c) Keeping this gun as low as possible either by reducing the
height of the wheels, or by cranking the axle downwards. This
reduces the leverage of the overturning force.
(d) Increasing the length of the trail. This increases the leverage of
the steadying force.
The well designed gun carriage is one that combines these factors
in a practical way so as to give the greatest possible steadiness to
the carriage at the same time keeping within the limits of weight
imposed by the necessity of mobility.
Gun carriages are constructed so as to permit movement of the
tube in the vertical and generally in the horizontal plane. These two
motions may be made simultaneous if so desired by proper
combination of the two motions and the axis of a gun aligned in any
desired direction within the limits of motion of its mount. The two
motions referred to are designated as follows: (a) Rotation of the
piece about a vertical axis, its inclination with the horizontal
remaining unchanged is called “traverse.” (b) Movement of the piece
in a vertical plane, the direction of the horizontal projection of the
axis of the bore remaining unchanged is called “elevation.”
In order to permit of the two motions mentioned, gun carriages are
provided with mechanisms for giving the piece accurately controlled
motion in both elevation and traverse. The elevating gear of most
American guns is an application of the Chinese or Telescopic screw.
This gives a short assembled length with the necessary extended
length required for modern ranges. It also gives the necessary
rapidity for action. An entirely different mechanism is used in our
howitzers and American 75s. In this case motion is communicated to
the rockers, which carry the gun and cradle, through the
engagement of worms with teeth cut on the lower circular edge of
the rockers, the latter being pivoted on the cradle trunnions.
TRAVERSING MECHANISMS.
Movement of the gun in traverse is accomplished in two general
ways.
(a) Pivot on the gun carriage axle.
1. The gun and cradle move around a vertical pintle or pivot
placed in a saddle or rocker which itself pivots on horizontal
trunnions or bearings usually attached to the axle. The rear end of
the rocker forms a seat or bearing on which the cradle and gun move
in traverse. The upper end of the elevating screw is also attached to
the rear end of the rocker. This allows the rocker and cradle to be
moved together in elevation and the cradle to move on the rocker in
traverse.
2. The gun and cradle are mounted by means of horizontal cradle
trunnions on a top carriage. The top carriage moves in traverse
around a vertical pintle or bearing attached over the axle and
between the front end of the trail flasks. The rear end of the top
carriage moves on bearings attached to the top of each side of the
trail flasks. This allows the gun, cradle and rocker to move in
elevation with respect to the top carriage and the top carriage
bearing the gun, cradle rocker and elevating mechanism to move in
traverse with respect to the bottom carriage.
(b) The gun, cradle and trail move in traverse by sliding along the
axle of the carriage on bearings provided for that purpose. In this
case the trail spade is the point of pivot.
The first system is the one generally used on all American gun
carriages except the 155-mm Howitzer. It gives ease and speed in
the manipulation of the piece in traverse, but has the disadvantage
of rendering the carriage less stable in firing due to the fact that the
direction of recoil of the gun is in the direction of the line joining the
trail spade and the central pivot, only when the gun is absolutely in
the center of its traverse. In all other positions, which will be the
usual case, there is a component at right angles to the line of trail
spade-central pivot which tends to throw the gun off from its proper
direction making it necessary to relay each time the gun is fired. The
second method is that in use on the French 75-mm gun and the
French and American 155 howitzer. While not so easy of
manipulation and giving less freedom of movement in traverse
(about 106 mils) it still has the advantage in that it gives greater
stability in firing due to the fact that the gun always recoils along the
line through the trail spade, perpendicular to the axle.
ELEVATING MECHANISMS.
There are two general classifications of gun carriages according to
the manner in which the laying for elevation is effected. The 3” gun is
an example of one type in which the total quadrant angle of
departure is laid off as one angle necessitating at each resetting of a
range a new resetting of the range bubble. It is evident that this
militates against both speed and accuracy in laying for elevation.
The other type is illustrated by the American 75 and by the French
and British 75-mm gun carriages which have what is called the
“independent line of site.” It differs from the other type in that there is
placed between the top carriage and the cradle an intermediate
carriage or rocker arm pivoting on the gun trunnions at one end, and
carrying at the other the support for the elevating device which gives
to the cradle and the gun the proper elevation for the range. This
intermediate carriage or rocker arm has a toothed edge geared with
a pinion fastened to the trail flask, by means of which, gun cradle
and elevating device may be moved in elevation without disturbing
the relation between itself and the gun, this being done by gears
independent of the elevating mechanism. An angle of site may be
set off for the intermediate carriage and after the bubble is centered
this actuating pinion may be blocked and no further concern be paid
to the angle of site. A cannoneer therefore has only to set his range
accurately on the index to give the changes in range ordered.
Elevation is accomplished by telescoping screws, by circular racks
and pinions, and by worms and arcs. Telescoping screws are good
for from 15 to 20 degrees in elevation only, as for greater angles they
become rather too large and cumbersome. The elevating arc is
attached on the top, on the bottom or on the side of the cradle and, if
possible, at its center. When the latter is not possible, two arcs are
generally used to prevent torsional strains developing. Top racks are
exposed to fire, side circular racks or arcs interfere with the traverse,
with the placing of the sights, and with the general handling of the
carriage. The bottom of the cradle is perhaps the best location for
the rack. As in the traversing mechanism, a train of bevelled gears
transmits the power from the hand wheel to the elevating
mechanism.
In both the traversing and elevating mechanism, strength,
simplicity, power, accessibility, non-interference and absence of lost
motion are the features sought. To secure these is one of the most
difficult things in gun-carriage design; for, since the traversing and
elevating are the last two elements considered, they must, therefore,
be the ground for modification and the means of adapting the great
main elements—namely, wheels, axle, trail, recoil mechanism and
gun—into a unit.
RECOIL MECHANISM.
The recoil system of the gun carriage consists of a recoil brake, a
counter recoil mechanism and a counter recoil brake. The function of
each part is apparent from its name. Various systems of checking
recoil on field guns have been used, among them may be
mentioned; friction devices including brakes on the wheel, inclined
planes, pneumatic and hydraulic brakes. All have either been
superseded by the last named or are used in connection with
hydraulic brakes. The power of the brake lies in the pressure
produced in the cylinder through the resistance to motion offered by
the liquid flowing through apertures. By varying the size of these
apertures the braking effect may be controlled so as to fulfill the
conditions demanded by the service. In designing the brake, the
effect of the counter recoil system, angle of fire, length of recoil,
friction and pressure within the cylinder must all be considered. In
howitzers which are designed to be fired at high angles of elevation,
the recoil must be shortened to prevent the breech striking the
ground, a condition successfully met. Since the pressure due to
recoil is ultimately led into the ground through the trail and spade,
consideration must be given to the problem of the moment of inertia
about the trailspade. The tendency to turn over backward about the
spade as the center is offset by the amount of the weight of the
carriage with respect to the same point. This raises the question as
to how much pressure may be allowed to act to the rear; all of which
must be considered in designing the carriage. The counter recoil
systems in general use are two: spring or pneumatic. The former is
illustrated in our 3” and 75-mm field guns, the latter by the French
75-mm gun and 155-mm howitzer. Their purpose, of course, is to
return the gun “into battery” after it has recoiled on the carriage.
The recoil mechanism is a study in itself, of which there are two
schools—the advocates of the spring and of the air recuperators.
Great Britain, Germany and the United States have been the
advocates of spring recuperation and France of air recuperation.
Great Britain and the United States were of the spring school,
undoubtedly, because of the lack of a satisfactory air recuperating
system; which is rather strikingly proven by the fact that both
countries have adopted air recuperation since they have procured or
developed satisfactory types.
Both schools have grounds for their position, however. The spring
school has in its favor simplicity of design and manufacture and ease
of replacement, which can be done in the field. On the other hand,
spring recoils have many breakages and greater weight combined
with a high replacement of weakened springs, the life varying from
3000 to 8000 rounds.
The air school has in its favor a high order of efficiency—smoother
action, general all around efficiency and less weight. But the air
recuperator is difficult to manufacture, costly, and when damaged
must go to the rear to be repaired; which, however, it seldom needs.
In mounting the spring recuperator, the most recent practice has
separated the recoil mechanism from the springs in order to
distribute the piston rod pull, thus preventing whip and allowing easy
access to the various parts for replacement, refilling and repairs. In
order to lower the center of gravity, the gun is slung under the recoil
cylinder with the two spring recuperators below and on either side.
Air recuperators are invariably located below the gun for protection
and because of their large size and shape, which adapt them for
attaching the elevating mechanism.
BATTERY OR FIRING POSITION
IN-BATTERY OR FIRING POSITION
HYDRO-SPRING RECOIL SYSTEM
HYDRO-PNEUMATIC RECOIL SYSTEM WITH FLUID IN DIRECT CONTACT
WITH THE AIR
SHIELDS.
Although cover for the cannoneers had been used off and on since
the invention of guns, it had fallen into disuse until it was firmly
established as an essential feature by the French on their 75-mm in
1897. All modern field guns have such protection both for the
cannoneers and for the delicate parts of the material which would be
damaged by shrapnel balls or shell fragments. The shield is made of
hardened steel capable of withstanding the impact of a bullet of a
service rifle at a 100 yds. range at a standard velocity. For
convenience the shield is divided into three parts known as the top
shield, main shield and apron, with suitable ports equipped with
shutters for the line of vision from sights. The main is fastened to the
axle and is rigid. The apron is hinged to the main shield or the axle-
swinging forward for the traveling position. The top shield is fastened
to the main shield by hinges and swings forward and downward for
traveling position.
SIGHTS.
The sights serve three important functions. They improve the
vision of the gunner and lay the gun in elevation and direction. The
simplest sight is the one over the line of metal which lays for
direction only, the second is the tangent sight mounted on a range
arc centered on the axis of rotation in elevation usually having a
deflection scale to correct for drift and to lead the moving target. This
unit lays for range and direction. The last sight is the telescopic or
panoramic sight which is mounted on a range arc and lays for
direction only, it is the unit for indirect fire, laying for direction, and
markedly improving the vision of the gunner. The latest model of the
American panoramic sight is superior to any in existence.
For precision in indirect fire, practically all carriages are equipped
with some form of range quadrant, containing a means of setting off
the angle of site and the range angle. All instruments are equipped
to compensate for difference in wheel level. The British carriage
automatically corrects for deviation, simplifying the firing date by that
element.
WHEELS.
The height of the wheels affects the draft, weight, clearance, and
stability of the carriage both as to road stability—i. e., low center of
gravity; and firing stability—i. e., the overturning movement about the
end of the trail. It is now believed that entirely too much stress has
been laid on road clearance. Reducing the height of wheel reduces
the weight and road clearance, lowers the center of gravity and
increases the firing stability; but it also reduces the angle of gun
elevation unless the trail is shortened. Firing stability in general is
increased by adding to the weight of the gun, lengthening the recoil,
slinging the gun as low as possible and lengthening the trail. The
less the height of the wheel exceeds four feet the better, despite the
poor draft feature, which is compensated for to some extent by a
reduction in weight and turning radius.
AXLES.
Axles are straight or of the offset type. The straight axle is stronger
for its weight. The drop axle allows the center of gravity to be
lowered.
TRAILS.
Most modern trails are of the sectional built-up type. Some,
however, are of tubular and telescopic. The most variable portion of
the trail is the spade. It consists of two parts, the spade proper and
the float. The former prevents recoil, the latter the burying of the trail.
The spades proper are of three types: the fixed, as in the French 75-
mm; semi-fixed, as in the 155-mm howitzer; and driven, as in the
Deport and American 1916 75-mm. Each has advantages and
disadvantages. The driven spade is considered essential for the split
trail carriage, as the latter has no means of seating itself; and should
one spade take, and not the other the carriage might be damaged
when the gun is fired at an extreme traverse.
Split trails introduced a novelty in field gun carriages, in that a
compensating device became necessary to adjust for the difference
in ground level of the two spades.
CONCLUSION.
Guns are designed to function in a certain way. They are not
temperamental. They follow absolutely and certainly fixed
mechanical laws. If they fail there is a reason and it can be
remedied. Certain parts are given certain shapes and forms, are
machined to nice adjustments, and in taking down and assembling
them, brains and dexterity are the tools to use rather than force and
sledge-hammers. Learn from your text when and how to apply force
and above all when not to use it. Treat these guns as you would a
friend on whom you know you can depend. They will not fail you.
CHAPTER IV
MODERN ARMAMENT.
DIVISION ARTILLERY.
Missions. The division artillery, first of all, must have the mobility
that will permit it to accompany the infantry of a division and the
maximum power consistent with that mobility; its object must be
primarily the infantry of the opposing division. It is therefore bound to
its own infantry with the closest bonds and its tactical use cannot be
separated from that of the infantry. The division artillery must fire,
accurately, a man killing projectile and be prepared for quick
changes of targets; it must have a great range because of depth,
both of its own and the enemy division; it must continually harass the
enemy, prevent his movement and force him into cover or protected
trenches. On the defensive it must break up the opposing infantry
formations by preparing a counter-offensive fire and by annihilating
fire on points from which the enemy attacks emerge; and, failing in
these, be prepared to use the barrage and shrapnel fire at close
range. In the offensive the division artillery must play its part in the
complex schemes of artillery preparation by cutting wire, destroying
machine gun nests, gassing areas, concentrating on infantry
positions and taking the principal part in the deep barrage that
should precede the infantry attack. Its fire, accompanying the infantry
movement, requires its own movement and by its mobility it often
becomes for some time the sole artillery protection in the preparation
and holding of a position which has been taken.
Light Gun and Howitzer. The consensus of opinion of artillery
officers is that the division artillery missions are best fulfilled by a
light field gun and a light field howitzer having a range of at least
11,000 yards. While differing in mechanical features, the field guns of
the different European countries are practically of the same type
and, though constant effort is being made to improve details, they
can be stated as generally satisfactory to their own governments and
not liable to any radical changes. The general type of field gun, while
capable of fulfilling most of the division artillery missions, must be
supplemented by a proper howitzer. There are many instances
where the terrain or the lay of the land offers such protection to the
infantry that the field gun cannot bring an effective fire. The howitzer
has the great advantage that with the proper set of propelling
charges and, therefore, choice of trajectories for the same range,
protected positions can be chosen for howitzers that guns could not
use, and angles of fall obtained on objectives that the normal
ammunition of guns would not give. The low muzzle velocity of
howitzers admits of their almost continuous use in harassing fire and
allows the use of a projectile double the weight of that of a field gun.
Such a howitzer renders excellent service in wire cutting and is a
useful projector of gas shells. To insure the mobility required of all
divisional artillery the weight of the howitzer and carriage should not
exceed that of the field gun, or about 4,500 pounds.
Light Gun Discussion. The consensus of opinion of all artillery
officers—French, English and American—is that the 75-mm gun, or
approximately this caliber, firing a 15-pound projectile or a projectile
of approximately this weight, and having a range of not less than
11,000 yards, is a satisfactory weapon at the present time for use
with the division artillery. The projectile in question, whether a
shrapnel or a high explosive shell, satisfies adequately the criterion
of man-killing. At the close of the war the nations were not entirely in
accord with respect to their conception of an up-to-date carriage for
a light field gun. All the nations whose tendencies have been
considered in this report have experienced to a varying degree with
field gun carriages, particularly in a desire to design a carriage
permitting a greater angle of elevation and greater movement of the
gun in the traverse. The Italians have expressed themselves in the
modified Deport Carriage; this vehicle is of the split trail type and
permits an elevation in excess of 75 degrees, and a traverse on
each side of the center of the carriage of about 20 degrees—about
356 mils. Up to the time that the board left France it was not possible
to learn the French decision in the matter of a split trail carriage for
their light field gun. It is known, however, that several types of this
carriage have been designed and tested; it is known, also, that
considerable favor has been found with the American 1916, which
type has been tested under the auspices of the French Government.
In England, however, the board was not able to develop any
enthusiasm for the split trail type, although the matter had been
seriously considered. In that country the up-to-date field gun carriage
appears to be adequately expressed in their new 18-pounder. The
vehicle upon which this gun is mounted permits an elevation of 37
degrees and an axle traverse of 4½ degrees on each side. The trail
is a box trail and the carriage is simple and steady in its construction
and lends itself to rapid production.
Motorization. At some time in the future it is probable that all the
division artillery will be motorized. The result of such a change in the
prime mover would be to remove the present restriction as to weight
of gun and carriage. The board senses a demand in the near future
for a light field gun having a maximum range of approximately
15,000 yards; such a range may be achieved by increasing the
muzzle velocity and, perhaps, the weight of the projectile, although
change in the form of projectiles will give some improvement over
the present ranges. It is probable that the limiting features in the
design of field guns of the future will be the requirement that it should
pass safely over temporary pontoon bridges and that the weight and
form and size of ammunition must be such that the present rate of
fire will not be slowed down. The board is of the opinion that, except
as to perfection of details, the limit of carriage design, as expressed
by the most modern type of box-trail and split-trail carriages, has
been reached; and feels that with the advent of motor transportation
the tendency will be toward a gun mounted on a self propelling
carriage and expressing the desires of the field artillery with respect
to maximum horizontal and vertical arcs of fire.
Light Gun. Ideal. A gun of about 3” caliber on a carriage
permitting a vertical arc of fire of from 5 degrees depression to 80
degrees elevation and a horizontal arc of fire of 360 degrees; a
projectile weighing not over 20 pounds, shrapnel and high explosive
shell of satisfactory man-killing characteristics with maximum range
of 15,000 yards; fixed ammunition, smokeless, flashless propelling
charge; time fuse for shrapnel. With shell having safe fuses with
different lengths of delayed action after they land. The high explosive
shell should be of one type only. Two propelling charges should be
furnished, a normal charge for about 11,000 yards range and a super
charge for maximum range. The proportion should be 90% of the
former and 10% of the latter. A maximum rate of fire of 20 rounds per
minute is deemed sufficient.
Light Gun. Practical. For the present, arm brigades with 75-mm
materiel. Models 1916, 50%, and 1897 (French), 50%.
Transport. Ideal. Mechanical transport is the prime mover of the
future. The introduction of mechanical transport will undoubtedly
cause far-reaching changes in the types of gun carriages. It is not
possible now to state just how far this will go or whether a gun
mounted on a self propelled vehicle or one mounted on some type of
trailing vehicle will be the final result. Both types may be necessary.
It is urgent that study and development be carried along these lines,
as we are on the verge of changes fully as radical as the introduction
of the long recoil field gun and carriage, and the country first utilizing
the new capabilities opened up by mechanical traction and the
caterpillar will have a great advantage in the next war. A limit of
4,500 pounds behind the team has heretofore been imposed on the
artillery of this class. The corresponding limit in the future will
probably be that imposed by pontoon bridges.
Transport. Practical. Therefore it is thought that four regiments of
75-mm guns (two regiments of French Model 1897, and two
regiments of U. S. Model 1916) should be immediately equipped with
motors, the remainder to be horsed; mechanical transport to
gradually replace horse only after the tractor demonstrates its
superiority in service.
Light Howitzer Discussion. The consensus of opinion of
American army officers consulted is that a howitzer about 4” in
caliber, firing a projectile weighing from 25 to 30 pounds at a
maximum range greater than 10,000 yards, is required. This opinion
is concurred in by the French, Italians and English, and it appears to
be definitely established that the mobility of the light field howitzer
should be practically the same as that of the light field gun. The
British army was equipped with a 4½” howitzer, firing a projectile
weighing 35 pounds and with a maximum range of 7,700 yards; the
weight of the howitzer limbered is 4676 pounds—150 pounds more
than the weight of the 18-pounder field gun. No evidence was found
that the British Government intended making any alterations in the
design of this howitzer; naturally they will attempt to increase the
range, power and accuracy of the projectile by change in its weight,
its capacity and its form. The French artillery was not equipped with
the light field howitzer of approximately the same weight as the 75-
mm field gun. During the war it was found impracticable to construct
a lighter howitzer without interfering with the production of other
calibers which were considered more important. In the earlier stages
of the war the Italian artillery was not equipped with a light field
howitzer; however, before the end of 1917 orders were placed for
several hundred howitzers of the 105-mm type. It should be noted
that several hundred howitzers of this caliber were being constructed
before the armistice and that many have been captured from the
Austrians by the Italians; this, so far as the Italians were concerned,
makes it certain that a light field howitzer will be furnished by the
Italian army. The German and Austrian armies were equipped with a
howitzer of the light field type; this weapon had a caliber of 105-mm
type.
It fired a projectile weighing 34.54 pounds at a maximum range of
10,500 yards. (Streamline shell.) The weight of the howitzer limbered
was 4,500 pounds. In the opinion of the board, the Germans have
proceeded on sound principles in their development of the light field
howitzer. Their ’98 model was a companion piece to their ’96 field
gun and in the years that passed from 1898 to 1916, which included
their early war experience, they kept to the idea of the relation of the
two pieces even to the extent of including in a field artillery regiment
one battalion of light howitzers. Their 1916 models of both light gun
and howitzers show the endeavor to keep the pieces in the same
class; that is, the weight of the gun and howitzer in action nearly the
same, 2,750 pounds and 2,700 pounds; the weight of the gun
limbered and the howitzer limbered are the same, 4,500 pounds; the
elevation of both the same—minus 10 to plus 40 degrees; the
carriages are of the same type; and the extreme ranges of gun and
howitzer are respectively 11,700 and 10,500 yards. From the
foregoing it is seen that all the important belligerents except the
French and the Americans were equipped with a light field howitzer
firing a projectile about twice the weight of the light field gun
projectile and having otherwise the same general characteristics.
There is no evidence to show that the fire of the French and the
American artillery was not fully effective as that of any other artillery;
however the testimony of the French and American artillery officers
is to the effect:
(a) That the lightest howitzer in use, i. e., the 155-mm, was not
sufficiently mobile to be a suitable companion piece for the 75-mm
gun.
(b) That many times the fire of the 75-mm gun proved ineffective
due to its flat trajectory; a howitzer would have been more effective
in the attack of certain targets.
(c) That a large volume of fire is necessary.
(d) That while the 155-mm howitzer is more powerful than the light
field howitzer its consumption of ammunition for many purposes is
wasteful and extravagant and its volume of fire is insufficient.
(e) That the light howitzer is particularly suited for the destruction
of wire entanglements; its better accuracy and more powerful
projectile make it more suitable than the field gun for that purpose.
(f) That the 75-mm field gun projectile is not so satisfactory a gas
shell as the howitzer projectile which has greater weight.
Light Howitzer. Idea. A weapon of about 105-mm caliber on a
carriage permitting a vertical arc of fire from minus 5 degrees to plus
65 degrees, and a horizontal arc of fire of 360 degrees. Efforts
should be made to develop a carriage which can be used
interchangeably for the division light gun referred to above and this
howitzer. The projectile should weigh about 30 to 35 pounds and
should include both shell and shrapnel. A maximum range of 12,000
yards will be satisfactory. Semi-fixed ammunition with varying
charges should be used, otherwise the ammunition should be similar
to that provided for the 75-mm guns.
Light Howitzer. Practical. For the present, the division should be
armed with the 155 howitzer, Schnieder, but active development and
test should be made on a type as stated under “Ideal” above, and
with the ammunition and other accessories to it. Upon the
development of the carriage as nearly approximating the ideal as
may be practically possible, efforts should be made to secure
quantity production in order that it may be incorporated in the
division as recommended. In addition, a split trail carriage for this
howitzer should be developed.
Transport. The light howitzer should have the same means of
transport as the light field gun and the same remarks heretofore
made as to the probable future development of the field gun also
apply to the howitzer carriage.
CORPS ARTILLERY.
Missions. It will be noted above that the division artillery missions
did not include their own protection against the enemy artillery. This
counter-battery work is the principal mission of the corps artillery.
The corps artillery has also the mission of extensive harassing and
interdicting fire along the corps front and to a greater depth than the
capabilities of the division artillery; also of destructive fire on strong
points as well as on railroad facilities and points of supply. For the
accomplishment of these corps artillery missions there are two types
of artillery necessary, a gun and a howitzer, each having 16,000
yards range and each weighing with the carriage about 11,000
pounds. There is another class of artillery called anti-aircraft artillery
to be considered. This is used first in providing anti-aircraft defense
for army zones, for certain areas in rear of armies or along a certain
line of anti-aircraft defense.
Medium Gun Discussion. The consensus of opinion of artillery
officers—Italian, English and American—is that a medium gun of
about 6” caliber is necessary. The medium type gun furnished to the
American army was the 4.7 (Model 1906). This gun has a maximum
elevation of 15 degrees with a corresponding maximum range of
8,750 yards. The British army was equipped with the 5” gun—the
carriage permits a maximum elevation of 21 degrees and 30
minutes, giving a maximum range of 12,500 yards. The French army
was equipped with, to a certain extent, the 105-mm and the 140-mm
gun. The 105-mm gun a maximum elevation of 37 degrees, with a
maximum range of 13,900 yards. The 140-mm gun has a maximum
elevation of 30 degrees and, with a high velocity, has a maximum
range of 19,500 yards. The French 105-mm gun is a modern
weapon (1913). The German artillery was equipped with a 105-mm
gun (M-1917) with a maximum elevation of 45 degrees, and a
maximum range of 16,000 yards. The German army was also
equipped with the 130-mm gun, having a maximum range of 16,500