(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{588:function(e,a,t){"use strict";t.r(a);var o=t(71),n=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"powered-by"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#powered-by"}},[e._v("#")]),e._v(" Powered By")]),e._v(" "),t("h3",{attrs:{id:"project-and-product-names-using-iotdb"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#project-and-product-names-using-iotdb"}},[e._v("#")]),e._v(' Project and Product names using "IoTDB"')]),e._v(" "),t("p",[e._v("Organizations creating products and projects using Apache IoTDB, along with associated marketing materials, should take care to respect the trademark in “Apache IoTDB” and its logo. Please refer to "),t("a",{attrs:{href:"https://www.apache.org/foundation/marks/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ASF Trademarks Guidance"),t("OutboundLink")],1),e._v(" and associated "),t("a",{attrs:{href:"https://www.apache.org/foundation/marks/faq/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FAQ"),t("OutboundLink")],1),e._v(' for comprehensive and authoritative guidance on proper usage of ASF trademarks.\nIt is recommended to not include “IoTDB” in any names to prevent potential trademark issue with the IoTDB project.\nAs an example, names like “IoTDB BigDataProduct” should not be used, as the name include “IoTDB” in general. The above links, however, describe some exceptions, like for names such as “BigDataProduct, powered by Apache IoTDB” or “BigDataProduct for Apache IoTDB”. In summary, any names contain "Apache IoTDB" as a whole are acceptable.'),t("br"),e._v("\nA common practice you can take is to create software identifiers (Maven coordinates, module names, etc.) like “iotdb-tool”. These are permitted. Nominative use of trademarks in descriptions is also allowed, as in “BigDataProduct is a subproduct for Apache IoTDB”.")]),e._v(" "),t("h3",{attrs:{id:"companies-and-organizations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#companies-and-organizations"}},[e._v("#")]),e._v(" Companies and Organizations")]),e._v(" "),t("p",[e._v("To add yourself to the list, please email dev@iotdb.apache.org with your organization name, URL, a list of IoTDB components you are using, and a short description of your use case.")]),e._v(" "),t("p",[e._v("You can also leave the info on "),t("a",{attrs:{href:"https://github.com/apache/incubator-iotdb/issues/748",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("School of Software (Tsinghua University), and National Engineering Laboratery for Big Data Software  that initially launched IoTDB")]),e._v(" "),t("ul",[t("li",[e._v("We have both graduate students and a team of professional software engineers working on the stack")]),e._v(" "),t("li",[e._v("We use Apache IoTDB in Shanghai Metro and two other cities in China to replace KairosDB.")]),e._v(" "),t("li",[e._v("We use Apache IoTDB in CMA (China Meteorological Administration) for storing 10-years station data. There are about 100 thousand stations.")])])]),e._v(" "),t("li",[t("p",[e._v("Lenovo developed TsFile Go version, and uses it in YOFC (Yangtze Optical Fiber and Cable Company). The system collects data from more than 90 thousand data points, stores them to the TsFile (with Go) as the edge storage and then reads them later to send to the cloud.")])]),e._v(" "),t("li",[t("p",[e._v("Goldwind uses Apache IoTDB to manage the wind turbine data. They consume the SCADA data from Kafka, write to IoTDB and use IoTDB to support queries.")])]),e._v(" "),t("li",[t("p",[e._v("DaTangXianYi deployed IoTDB in many power stations in China.")])]),e._v(" "),t("li",[t("p",[e._v("Beijing ZhiChuangXinKe uses IoTDB to store the battery data of signal towers for China Tower company. There are about 3 million towers.")])]),e._v(" "),t("li",[t("p",[e._v("Beijing QingZhiWuLian uses IoTDB for electric generator's monitoring. Currently they look forward to the cluster mode of IoTDB.")])]),e._v(" "),t("li",[t("p",[e._v("JianLongGangTie is testing IoTDB for using it in their applications.")])])])])}),[],!1,null,null,null);a.default=n.exports}}]);