简体   繁体   English

表的Azure存储帐户

[英]Azure Storage Account for Tables

So first of all I'd like to say I'm no DBA nor coder, I'm just a regular IT person that works as support for network and infrastructure, however, I like to get familiar with technologies in general and understand the basics of it, let's say how they work, implemented with no additional specific details. 所以首先我想说我既不是DBA也不是编码员,我只是一个普通的IT人员,负责网络和基础架构的支持,但是,我希望熟悉一般的技术并了解基础知识让我们说说它们是如何工作的,没有其他具体细节。

I've been reading about Azure Storage Accounts in regards to tables. 我一直在阅读有关表的Azure存储帐户。 As IT, I had to implement simple file shares via SMB 3.0 in order to have them mapped on our network, I've come across other options such as blobs, tables and queues. 作为IT部门,我必须通过SMB 3.0实现简单的文件共享,以便将它们映射到我们的网络上,但我遇到了其他选择,例如Blob,表和队列。 I've read about them however I'm trying to get the main functionality of tables for a coder. 我已经阅读了有关它们的内容,但是我正在尝试获取编码器表的主要功能。

Correct me if I am wrong, when you code an app with a database, you can put the database on same/different server, and that can be on premise or on the cloud and you kind of link both together. 如果我错了,请纠正我,当您使用数据库编写应用程序代码时,可以将数据库放置在同一台/不同的服务器上,并且可以在内部或在云上,并且可以将两者链接在一起。

And as far as Im concerned and what I was able to find out investigating on the web, these tables are NoSQL and no constraints, you create the tables and data through Visual Studio thanks to an API, then that information is reflect on your storage. 就Im而言,我可以在网上进行调查,这些表都是NoSQL,没有任何约束,您可以借助API通过Visual Studio创建表和数据,然后这些信息就会反映在您的存储中。

How is this is useful when using it for the app you're developing? 将其用于正在开发的应用程序时,这有什么用?

I've been reading about Azure Storage Accounts in regards to tables. 我一直在阅读有关表的Azure存储帐户。 As IT, I had to implement simple file shares via SMB 3.0 in order to have them mapped on our network, I've come across other options such as blobs, tables and queues. 作为IT部门,我必须通过SMB 3.0实现简单的文件共享,以便将它们映射到我们的网络上,但我遇到了其他选择,例如Blob,表和队列。 I've read about them however I'm trying to get the main functionality of tables for a coder. 我已经阅读了有关它们的内容,但是我正在尝试获取编码器表的主要功能。

And as far as Im concerned and what I was able to find out investigating on the web, these tables are NoSQL and no constraints, you create the tables and data through Visual Studio thanks to an API, then that information is reflect on your storage. 就Im而言,我可以在网上进行调查,这些表都是NoSQL,没有任何约束,您可以借助API通过Visual Studio创建表和数据,然后这些信息就会反映在您的存储中。

Azure Storage Accounts is a "box" to keep your Blobs, Tables, Queues, Files organised from the management point of view and for the access control. Azure存储帐户是一个“盒子”,用于从管理角度和访问控制来组织Blob,表,队列,文件。 Each storage type is good for it's specific tasks. 每种存储类型都可以满足其特定任务。

If the world would have just one super storage which will solve all our possible cases for storing, querying and managing the data then there would not be such variety of different databases, storage types etc. available. 如果世界上只有一个超级存储可以解决我们所有可能的存储,查询和管理数据的情况,那么就不会有各种各样的不同数据库,存储类型等可用。

If you need to share the files as a "network folder" - try Azure Files . 如果需要将文件共享为“网络文件夹”,请尝试使用Azure Files If your coders need a database storage, then the first question would be what are the requirements to the database do they have? 如果您的编码人员需要数据库存储,那么第一个问题将是他们对数据库有什么要求? What is the purpose of that database would be, etc. Azure, particularly, has a lot of different database solutions, and again, each of them good for some specific task, and can be not a good choice for other tasks. 该数据库的用途将是什么,等等。尤其是Azure,它具有许多不同的数据库解决方案,而且每个解决方案都适合某些特定任务,而对于其他任务则不是一个好的选择。

As to Azure Tables, from the official docs : 至于Azure Tables,来自官方文档

Azure Table storage is a service that stores structured NoSQL data in the cloud, providing a key/attribute store with a schemaless design. Azure表存储是一项服务,可在云中存储结构化的NoSQL数据,从而为键/属性存储提供无模式设计。

So, if your coders do need to store such data, then yes, that would be one of the possible choices. 因此,如果您的编码人员确实需要存储此类数据,那么可以,那将是可能的选择之一。


Correct me if I am wrong, when you code an app with a database, you can put the database on same/different server, and that can be on premise or on the cloud and you kind of link both together. 如果我错了,请纠正我,当您使用数据库编写应用程序代码时,可以将数据库放置在同一台/不同的服务器上,并且可以在内部或在云上,并且可以将两者链接在一起。

Correct. 正确。 But also you can have your own server with the database which you need to manage yourself, or you can choose some cloud service which will provide the database for you but will keep the underlying server and other maintenance activity managed for you, so you no need to worry/spend your time on that. 但是,您也可以拥有自己的服务器以及需要管理的数据库,或者您可以选择一些云服务,该服务将为您提供数据库,但将为您管理基础服务器和其他维护活动,因此您不需要担心/花费您的时间。


How is this is useful when using it for the app you're developing? 将其用于正在开发的应用程序时,这有什么用?

It is important to understand what your requirements are for data storage in order to pick a proper one. 重要的是要了解您对数据存储的要求,以便选择合适的存储。 This question perhaps should be addressed not to you, but to your coders, who are building the app and can consolidate their requirements to the database store. 也许不应该将这个问题发给您,而是发给您的编码人员,他们正在构建应用程序并可以将其要求整合到数据库存储中。 Usually, they will tell you exactly what they need, and you may give them some ideas or advice of the alternatives, if any (That may be a similar solution with extra functionality or the way how the data is stored or processed, or have more built in integrations that may be important for you, or a decision whether keep own installation or use cloud managed service) 通常,他们会告诉您确切的需求,并且您可能会给他们一些备选方案的想法或建议(如果有的话)(这可能是具有更多功能或数据存储或处理方式的类似解决方案,或者具有更多内置的集成可能对您很重要,或者是决定自行安装还是使用云托管服务)


For your further possible question about When should I use a NoSQL database instead of a relational database? 对于您可能在何时使用NoSQL数据库而不是关系数据库的进一步问题 Is it okay to use both on the same site? 可以在同一站点上同时使用两者吗? see this thread 看到这个线程


Update based on further questions: 根据其他问题进行更新

If I develop an application with a database whose tables are on Azure, can I call let's say functions or data from it to my main application that is hosted on premise? 如果我使用表位于Azure上的数据库开发应用程序,我可以称其为内部托管的主应用程序中的函数或数据吗? What's the benefit of doing that versus hosting the tables on premise other than it's largely scalable and highly available? 相对于在很大程度上可扩展和高度可用的本地托管表,这样做有什么好处?

Perhaps you need to better understand the relationship between App (Application) and DB (Database). 也许您需要更好地了解App(应用程序)和DB(数据库)之间的关系。 The Database is a standalone system, which store the data, reply to the incoming queries (receive request, process it, return the result). 数据库是一个独立的系统,用于存储数据,回复传入的查询(接收请求,处理它,返回结果)。 In overall to the DB is not important who is requesting the data. 总体而言,DB对谁请求数据并不重要。 It is a "passive" system. 这是一个“被动”系统。 (There are some cases when DB can trigger further processes in data processing pipelines, but that is beyond this scope). (在某些情况下,DB可以触发数据处理管道中的进一步处理,但这超出了此范围)。

The App in opposite is an active system in App<->DB relationship. 相反的App是处于App <-> DB关系中的活动系统。 (Also leave behind more advanced designs where App is not just a 1 system). (还留下了更多的高级设计,其中App不仅是1系统)。 App receive requests, process them ( may do external requests to other "services" if that is necessary ), give a response (with or without data) to the requester. 应用接收请求,处理请求( 如有必要 ,可以向其他“服务”发出外部请求 ),向请求者做出响应(有或没有数据)。 In App<->DB relationship the external requests is what happening. 在App <-> DB关系中,发生了外部请求 At some point App need some data from the DB, so App make a request to the DB, obtain the response and continue its own logic. App有时需要从数据库中获取一些数据,因此App向数据库发出请求,获取响应并继续其自己的逻辑。

Where App server and DB server are placed is not that important (for simplicity). 应用服务器和数据库服务器的放置位置并不重要(为简单起见)。 The important part is whether DB server is accessable for the requests. 重要的部分是数据库服务器是否可访问请求。 DB can be on-prem with public static IP address, it can be in cloud on your own server which has public static IP address (sometimes that is archived in different ways but we skip that for simplicity), that can be a Database as a Service cloud solution, where you do not need to have a server and configure the database, but have a url endpoint which you need to use to query the DB. DB可以使用公共静态IP地址在本地部署,也可以位于您自己的具有公共静态IP地址的服务器上的云中(有时以不同的方式进行存档,但为简单起见,我们将其跳过),该数据库可以作为服务云解决方案,您无需拥有服务器和配置数据库,但具有需要用于查询数据库的url端点。

I appreciate the answer, and I pretty much agree with what you're saying. 非常感谢您的回答,我几乎同意您的意思。

But my questions goes beyond what the requirements are for the developers. 但是我的问题超出了对开发人员的要求。

I'll modify the question. 我将修改问题。 If I develop an application with a database whose tables are on Azure, can I call let's say functions or data from it to my main application that is hosted on premise? 如果我使用表位于Azure上的数据库开发应用程序,我可以称其为内部托管的主应用程序中的函数或数据吗? What's the benefit of doing that versus hosting the tables on premise other than it's largely scalable and highly available? 相对于在很大程度上可扩展和高度可用的本地托管表,这样做有什么好处?

Azure Storage Tables are the "Notepad" of NoSQL Databases. Azure存储表是NoSQL数据库的“记事本”。 If you want quick and easy key/value pairs, tables is the way to go. 如果您想要快速简单的键/值对,则可以使用表。 If you are looking for the "Word" of NoSQL in Azure then Cosmos DB is where it's at. 如果要在Azure中寻找NoSQL的“单词”,那么Cosmos DB就在其中。 Cosmos DB offers global distrobution, better features and better SLA (see comparison ). Cosmos DB提供了全球发行,更好的功能和更好的SLA(请参阅比较 )。 Tables are cheaper too. 桌子也便宜。

Azure also supports MySQL, PostGreSQL, MariaDB and MSSQL as PaaS offerings if you wish to use a traditional database. 如果您希望使用传统数据库,Azure还支持MySQL,PostGreSQL,MariaDB和MSSQL作为PaaS产品。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM