大数据Hadoop之DorisDB核心概念介绍与简单使用(S
一、前言
DorisDB的介绍与环境部署(StarRocks)可以参考我之前的文章哦:大数据Hadoop之DorisDB介绍与环境部署(StarRocks)
官方文档:https:docs。starrocks。comzhcnmainloadingLoadingintro二、简单使用1)连接StarRocks
在成功部署StarRocks集群后,您可以通过MySQL客户端连接任意一个FE节点的queryport(默认为9030)以连接StarRocks。StarRocks内置root用户,密码默认为空。cdSTARROCKSHOME启动FE。febinstartfe。shdaemon启动BE。bebinstartbe。shdaemon启动broker。apachehdfsbrokerbinstartbroker。shdaemon连接mysqlh127。0。0。1P9030urootshowprocfrontendsG;showprocbackendsG;
webUI:http:192。168。182。110:8030system2)创建数据库
使用root用户创建exampledb数据库。CREATEDATABASEexampledb;showdatabases;
说明:与MySQL的表结构类似,Informationschema包含当前StarRocks集群的元数据信息。3)创建表useexampledb;CREATETABLEIFNOTEXISTSdetailDemo(recruitdateDATENOTNULLCOMMENTYYYYMMDD,regionnumTINYINTCOMMENTrange〔128,127〕,numplateSMALLINTCOMMENTrange〔32768,32767〕,telINTCOMMENTrange〔2147483648,2147483647〕,idBIGINTCOMMENTrange〔26312631〕,passwordLARGEINTCOMMENTrange〔2127121271〕,nameCHAR(20)NOTNULLCOMMENTrangechar(m),min(1255),profileVARCHAR(500)NOTNULLCOMMENTupperlimitvalue65533bytes,hobbySTRINGNOTNULLCOMMENTupperlimitvalue65533bytes,leavetimeDATETIMECOMMENTYYYYMMDDHH:MM:SS,channelFLOATCOMMENT4bytes,incomeDOUBLECOMMENT8bytes,accountDECIMAL(12,4)COMMENT,ispassBOOLEANCOMMENTtruefalse)ENGINEOLAPDUPLICATEKEY(recruitdate,regionnum)DISTRIBUTEDBYHASH(recruitdate,regionnum)BUCKETS8;
【错误】ERROR1064(HY000):Failedtofindenoughhostinallbackends。need:3
【原因】这是因为默认需要3个副本,副本数必须是BE数,需要带上PROPERTIES,设置副本数。useexampledb;CREATETABLEIFNOTEXISTSdetailDemo(recruitdateDATENOTNULLCOMMENTYYYYMMDD,regionnumTINYINTCOMMENTrange〔128,127〕,numplateSMALLINTCOMMENTrange〔32768,32767〕,telINTCOMMENTrange〔2147483648,2147483647〕,idBIGINTCOMMENTrange〔26312631〕,passwordLARGEINTCOMMENTrange〔2127121271〕,nameCHAR(20)NOTNULLCOMMENTrangechar(m),min(1255),profileVARCHAR(500)NOTNULLCOMMENTupperlimitvalue65533bytes,hobbySTRINGNOTNULLCOMMENTupperlimitvalue65533bytes,leavetimeDATETIMECOMMENTYYYYMMDDHH:MM:SS,channelFLOATCOMMENT4bytes,incomeDOUBLECOMMENT8bytes,accountDECIMAL(12,4)COMMENT,ispassBOOLEANCOMMENTtruefalse)ENGINEOLAPDUPLICATEKEY(recruitdate,regionnum)DISTRIBUTEDBYHASH(recruitdate,regionnum)BUCKETS8PROPERTIES(replicationnum2);
【温馨提示】注意:在StarRocks中,字段名不区分大小写,表名区分大小写。4)建表语句说明1、排序键
StarRocks表内部组织存储数据时会按照指定列排序,这些列为排序列(SortKey)。明细模型中由DUPLICATEKEY指定排序列。以上示例中的recruitdate以及regionnum两列为排序列。
【温馨提示】排序列在建表时应定义在其他列之前。排序键详细描述以及不同数据模型的表的设置方法请参考排序键。2、字段类型
StarRocks表中支持多种字段类型,除以上示例中已经列举的字段类型,还支持BITMAP类型,HLL类型,ARRAY类型,字段类型介绍详见官方文档数据类型章节。
【温馨提示】在建表时,您应尽量使用精确的类型。例如,整形数据不应使用字符串类型,INT类型即可满足的数据不应使用BIGINT类型。精确的数据类型能够更好的发挥数据库的性能。3、分区分桶分区的定义:对数据进行水平切分,水平切分之后数据是完全物理隔离的,每个分区即为一个物理文件夹。分桶的定义:对数据进行垂直切分,各个分桶相互独立,每个分桶即为一个文件。PARTITION关键字用于给表创建分区,StarRocks支持动态生成分区,详见动态分区管理。DISTRIBUTED关键字用于给表创建分桶,以上示例中使用recruitdate以及regionnum两个字段通过Hash算法创建8个桶。创建表时合理的分区和分桶设计可以优化表的查询性能。有关分区分桶列如何选择,详见数据分布。4、数据模型
DUPLICATE关键字表示当前表为明细模型,KEY中的列表示当前表的排序列。StarRocks支持多种数据模型,分别为明细模型,聚合模型,更新模型,主键模型。不同模型的适用于多种业务场景,合理选择可优化查询效率。5、索引
StarRocks默认会给Key列创建稀疏索引加速查询,具体规则见排序键。支持的索引类型有Bitmap索引,Bloomfilter索引等。6、ENGINE类型
默认ENGINE(引擎)类型为OLAP,对应StarRocks集群内部表。其他可选项包括mysql,elasticsearch,hive,以及ICEBERG,分别代表所创建的表为相应类型的外部表。7、修改表结构
您可以通过ALTERTABLE命令可以修改表的Schema,包括增加列,删除列,修改列类型(暂不支持修改列名称),改变列顺序。
【增加列】ALTERTABLEdetailDemoADDCOLUMNuvBIGINTDEFAULT0afterispass;
【查看修改表结构作业状态】SHOWALTERTABLECOLUMNG;
当作业状态为FINISHED,则表示作业完成,新的表结构修改已生效。
【取消修改表结构】
您可以通过以下命令取消当前正在执行的作业。CANCELALTERTABLECOLUMNFROMtablenameG;
【创建用户并授权】
exampledb数据库创建完成之后,您可以使用root账户创建test账户,并授予其exampledb的读写权限。CREATEUSERtestIDENTIFIEDby123456;GRANTALLonexampledbtotest;
通过登录被授权的test账户,其他用户就可以操作exampledb数据库了。mysqlh127。0。0。1P9030utestp输入密码:123456showdatabases;showtablesfromexampledb;三、表设计1)列式存储
StarRocks中的表和关系型数据相同,由行和列构成。每行数据对应用户一条记录,每列数据具有相同的数据类型。所有数据行的列数相同,可以动态增删列。在StarRocks中,一张表的列可以分为维度列(也称为Key列)和指标列(也称为Value列)。在StarRocks中,表的数据按列存储。物理上,一列数据会经过分块编码、压缩等操作,然后持久化存储到非易失设备上。维度列用于分组和排序,指标列的值可以通过聚合函数SUM、COUNT、MIN、MAX、REPLACE、HLLUNION和BITMAPUNION等累加起来。因此,StarRocks中的表也可以认为是多维的Key到多维指标的映射。2)稀疏索引
范围查找时,使用前缀索引(PrefixIndex),如下图所示。
一张表中的数据组织主要由三部分构成:前缀索引:表中每1024行数据构成一个逻辑数据块(DataBlock)。每个逻辑数据块在前缀索引表中存储一项索引,内容为表的维度列的前缀,并且长度不超过36字节。前缀索引是一种稀疏索引,使用某行数据的维度列的前缀查找索引表,可以确定该行数据所在逻辑数据块的起始行号。Percolumndatablock:表中每列数据都按64KB分块存储。数据块作为一个单位单独编码、压缩,也作为IO单位,整体写回设备或者读出。Percolumncardinalindex:表中每列数据都有各自的行号索引表。列的数据块和行号索引一一对应,索引由数据块的起始行号及数据块的位置和长度信息构成。用数据行的行号查找行号索引表,可以获取包含该行号的数据块所在的位置,读取目标数据块后,可以进一步查找数据。
由此可见,查找维度列的前缀的过程包含以下五个步骤:先查找前缀索引,获得逻辑数据块的起始行号。查找维度列的行号索引,定位到维度列的数据块。读取数据块。解压、解码数据块。从数据块中找到维度列前缀对应的数据项。3)列级索引
StarRocks支持布隆过滤器(BloomFilter)、ZoneMap索引和位图(Bitmap)索引等列级别的索引技术:布隆过滤器有助于快速判断数据块中不含所查找的值。ZoneMap索引有助于通过数据范围快速过滤出待查找的值。位图索引有助于快速计算出枚举类型的列满足一定条件的行。4)数据模型建表时,您需要指定数据模型(DataModel),这样数据导入至数据模型时,StarRocks会按照排序健对数据进行排序、处理和存储。StarRocks支持四种数据模型,分别是明细模型(DuplicateKeyModel)、聚合模型(AggregateKeyModel)、更新模型(UniqueKeyModel)和主键模型(PrimaryKeyModel)。这四种数据模型能够支持多种数据分析场景,例如日志分析、数据汇总分析、实时分析等。1、明细模型(DuplicateKeyModel)
明细模型是默认的建表模型。创建表时,支持定义排序键。如果查询的过滤条件包含排序键,则StarRocks能够快速地过滤数据,提高查询效率。明细模型适用于分析日志数据等,支持追加新数据,不支持修改历史数据。
【适用场景】分析原始数据,例如原始日志、原始操作记录等。查询方式灵活,不需要局限于预聚合的分析方式。导入日志数据或者时序数据,主要特点是旧数据不会更新,只会追加新的数据。
【示例】
例如,需要分析某时间范围的某一类事件的数据,则可以将事件时间(eventtime)和事件类型(eventtype)作为排序键。CREATETABLEIFNOTEXISTSdetail(eventtimeDATETIMENOTNULLCOMMENTdatetimeofevent,eventtypeINTNOTNULLCOMMENTtypeofevent,useridINTCOMMENTidofuser,devicecodeINTCOMMENTdevicecode,channelINTCOMMENT)DUPLICATEKEY(eventtime,eventtype)DISTRIBUTEDBYHASH(userid)BUCKETS8PROPERTIES(replicationnum2);2、聚合模型(AggregateKeyModel)
建表时,支持定义排序键和指标列,并为指标列指定聚合函数。当多条数据具有相同的排序键时,指标列会进行聚合。在分析统计和汇总数据时,聚合模型能够减少查询时所需要处理的数据,提升查询效率。
【适用场景】
适用于分析统计和汇总数据。比如:通过分析网站或APP的访问流量,统计用户的访问总时长、访问总次数。广告厂商为广告主提供的广告点击总量、展示总量、消费统计等。通过分析电商的全年交易数据,获得指定季度或者月份中,各类消费人群的爆款商品。
【示例】
例如某一段时间内,来自不同城市的用户,访问不同网页的总次数。则可以将网页地址siteid、日期date和城市代码citycode作为排序键,将访问次数pv作为指标列,并为指标列pv指定聚合函数为SUM。CREATETABLEIFNOTEXISTSexampledb。aggregatetbl(siteidLARGEINTNOTNULLCOMMENTidofsite,dateDATENOTNULLCOMMENTtimeofevent,citycodeVARCHAR(20)COMMENTcitycodeofuser,pvBIGINTSUMDEFAULT0COMMENTtotalpageviews)DISTRIBUTEDBYHASH(siteid)BUCKETS8PROPERTIES(replicationnum2);3、更新模型(UniqueKeyModel)
建表时,支持定义主键和指标列,查询时返回主键相同的一组数据中的最新数据。相对于明细模型,更新模型简化了数据导入流程,能够更好地支撑实时和频繁更新的场景。
【适用场景】
实时和频繁更新的业务场景,例如分析电商订单。在电商场景中,订单的状态经常会发生变化,每天的订单更新量可突破上亿。
【示例】
在电商订单分析场景中,经常按照日期对订单状态进行统计分析,则可以将经常使用的过滤字段订单创建时间createtime、订单编号orderid作为主键,其余列订单状态orderstate和订单总价totalprice作为指标列。这样既能够满足实时更新订单状态的需求,又能够在查询中进行快速过滤。CREATETABLEIFNOTEXISTSorders(createtimeDATENOTNULLCOMMENTcreatetimeofanorder,orderidBIGINTNOTNULLCOMMENTidofanorder,orderstateINTCOMMENTstateofanorder,totalpriceBIGINTCOMMENTpriceofanorder)UNIQUEKEY(createtime,orderid)DISTRIBUTEDBYHASH(orderid)BUCKETS8PROPERTIES(replicationnum2);4、主键模型(PrimaryKeyModel)
StarRocks1。19版本推出了主键模型(PrimaryKeyModel)。建表时,支持定义主键和指标列,查询时返回主键相同的一组数据中的最新数据。相对于更新模型,主键模型在查询时不需要执行聚合操作,并且支持谓词下推和索引使用,能够在支持实时和频繁更新等场景的同时,提供高效查询。
【适用场景】
主键模型适用于实时和频繁更新的场景,例如:主实时对接事务型数据至StarRocks。事务型数据库中,除了插入数据外,一般还会涉及较多更新和删除数据的操作,因此事务型数据库的数据同步至StarRocks时,建议使用主键模型。利用部分列更新轻松实现多流JOIN。在用户画像等分析场景中,一般会采用大宽表方式来提升多维分析的性能,同时简化数据分析师的使用模型。
【示例】
例如,需要实时分析用户情况,则可以将用户IDuserid作为主键,其余为指标列。建表语句如下:createtableorders(dtdateNOTNULL,orderidbigintNOTNULL,useridintNOTNULL,merchantidintNOTNULL,goodidintNOTNULL,goodnamestringNOTNULL,priceintNOTNULL,cntintNOTNULL,revenueintNOTNULL,statetinyintNOTNULL)PRIMARYKEY(dt,orderid)PARTITIONBYRANGE(dt)(PARTITIONp20210820VALUES〔(20210820),(20210821)),PARTITIONp20210821VALUES〔(20210821),(20210822)),PARTITIONp20210929VALUES〔(20210929),(20210930)),PARTITIONp20210930VALUES〔(20210930),(20211001)))DISTRIBUTEDBYHASH(orderid)BUCKETS4PROPERTIES(replicationnum2);
【温馨提示】enablepersistentindex:是否持久化主键索引,同时使用磁盘和内存存储主键索引,避免主键索引占用过大内存空间。取值为true或者false。如果磁盘为固态硬盘SSD,则建议设置为true。自2。3。0版本起,StarRocks支持配置该参数。5)数据分布1、常见的四种数据分布方式
现代分布式数据库中,常见的数据分布方式有如下四种:RoundRobin、Range、List和Hash。如下图所示:
RoundRobin:以轮询的方式把数据逐个放置在相邻节点上。Range:按区间进行数据分布。如上图所示,区间〔13〕、〔46〕分别对应不同的范围(Range)。List:直接基于离散的各个取值做数据分布,性别、省份等数据就满足这种离散的特性。每个离散值会映射到一个节点上,多个不同的取值可能也会映射到相同节点上。Hash:通过哈希函数把数据映射到不同节点上。
为了更灵活地划分数据,除了单独采用上述四种数据分布方式之一以外,您还可以根据具体的业务场景需求组合使用这些数据分布方式。常见的组合方式有HashHash、RangeHash、HashList。2、StarRocks的数据分布方式
StarRocks支持如下两种数据分布方式:Hash数据分布方式:一张表为一个分区,分区按照分桶键和分桶数量进一步进行数据划分。采用Hash分布的建表语句如下,其中分桶键为siteid:CREATETABLEsiteaccess(siteidINTDEFAULT10,citycodeSMALLINT,usernameVARCHAR(32)DEFAULT,pvBIGINTSUMDEFAULT0)AGGREGATEKEY(siteid,citycode,username)DISTRIBUTEDBYHASH(siteid)BUCKETS10PROPERTIES(replicationnum2);RangeHash数据分布方式:一张表拆分成多个分区,每个分区按照分桶键和分桶数量进一步进行数据划分。采用RangeHash组合分布的建表语句如下,其中分区键为eventday,分桶键为siteid:CREATETABLEsiteaccess2(eventdayDATE,siteidINTDEFAULT10,citycodeVARCHAR(100),usernameVARCHAR(32)DEFAULT,pvBIGINTSUMDEFAULT0)AGGREGATEKEY(eventday,siteid,citycode,username)PARTITIONBYRANGE(eventday)(PARTITIONp1VALUESLESSTHAN(20200131),PARTITIONp2VALUESLESSTHAN(20200229),PARTITIONp3VALUESLESSTHAN(20200331))DISTRIBUTEDBYHASH(siteid)BUCKETS10PROPERTIES(replicationnum2);6)排序键和前缀索引为加速查询,StarRocks在内部组织和存储数据时,会把表中数据按照指定的一个或多个列进行排序。这些用于排序的列,称之为排序健(SortKey)。为减少内存开销,StarRocks在排序健的基础上又引入了前缀索引(PrefixIndex)。表中每1024行数据构成一个逻辑数据块(DataBlock)。每个逻辑数据块在前缀索引表中存储一项索引,内容为表的维度列的前缀,并且长度不超过36字节。前缀索引是一种稀疏索引,使用某行数据的维度列的前缀查找索引表,可以确定该行数据所在逻辑数据块的起始行号。前缀索引的大小会比数据量少1024倍,因此会全量缓存在内存中,在实际查找的过程中可以有效加速查询。四、数据导入
StarRocks支持两种导入模式:同步导入和异步导入。
1)同步导入
同步导入是指用户创建导入作业,StarRocks同步执行,执行完成后返回导入结果。您可以通过返回的导入结果判断导入作业是否成功。
支持同步模式的导入方式有StreamLoad和INSERTINTO。
导入过程如下:创建导入作业。查看StarRocks返回的导入结果。判断导入结果。如果导入结果为失败,可以重试导入作业。
【示例】StreamLoad
先创建测试库表createdatabasetestDb;CREATETABLEtestDb。testTbl(idINTDEFAULT10,cityVARCHAR(32)DEFAULT)DISTRIBUTEDBYHASH(id)BUCKETS10PROPERTIES(replicationnum2);
样例数据:catjsontest。jsonEOF{name:北京,code:2}EOF
执行数据导入语法curllocationtrusteduuser:passwd〔H。。。〕Tdata。fileXPUThttp:fehost:httpportapi{db}{table}streamload导入jsoncurlvlocationtrusteduroot:Hformat:jsonHjsonpaths:〔。name,。code〕Hcolumns:city,tmpid,idtmpid100Tjsontest。jsonhttp:127。0。0。1:8030apitestDbtestTblstreamload
【示例】INSERTINTO
创建导入任务CREATEDATABASEIFNOTEXISTSloadtest;USEloadtest;CREATETABLEinsertwikiedit(eventtimeDATETIME,channelVARCHAR(32)DEFAULT,userVARCHAR(128)DEFAULT,isanonymousTINYINTDEFAULT0,isminorTINYINTDEFAULT0,isnewTINYINTDEFAULT0,isrobotTINYINTDEFAULT0,isunpatrolledTINYINTDEFAULT0,deltaINTSUMDEFAULT0,addedINTSUMDEFAULT0,deletedINTSUMDEFAULT0)AGGREGATEKEY(eventtime,channel,user,isanonymous,isminor,isnew,isrobot,isunpatrolled)PARTITIONBYRANGE(eventtime)(PARTITIONp06VALUESLESSTHAN(2015091206:00:00),PARTITIONp12VALUESLESSTHAN(2015091212:00:00),PARTITIONp18VALUESLESSTHAN(2015091218:00:00),PARTITIONp24VALUESLESSTHAN(2015091300:00:00))DISTRIBUTEDBYHASH(user)BUCKETS3PROPERTIES(replicationnum1);
通过values导入数据INSERTINTOinsertwikieditVALUES(2015091200:00:00,en。wikipedia,GELongstreet,0,0,0,0,0,36,36,0),(2015091200:00:00,ca。wikipedia,PereBot,0,1,0,1,0,17,17,0);
通过select导入数据指定labelINSERTINTOinsertwikieditWITHLABELinsertloadwikipedia1SELECTFROMroutinewikiedit;指定分区导入,只导入到p06和p12分区INSERTINTOinsertwikieditPARTITION(p06,p12)WITHLABELinsertloadwikipedia2SELECTFROMroutinewikiedit;指定部分列导入,只导入eventtime和channel字段INSERTINTOinsertwikieditWITHLABELinsertloadwikipedia3(eventtime,channel)SELECTeventtime,channelFROMroutinewikiedit;2)异步导入
异步导入是指创建导入作业以后,StarRocks直接返回创建成功,但创建成功不代表数据已经导入成功。StarRocks会异步执行导入作业。在导入作业创建成功以后,您需要通过轮询的方式查看导入作业的状态。如果导入作业创建失败,可以根据失败信息,判断是否需要重试。
支持异步模式的导入方式有BrokerLoad、RoutineLoad和SparkLoad。
导入过程如下:创建导入作业。查看StarRocks返回的作业创建结果。判断作业创建结果。如果作业创建成功,进入步骤4;如果作业创建失败,可以回到步骤1,尝试重试导入作业。轮询查看导入作业的状态,直到状态变为FINISHED或CANCELLED。
在异步的导入方式BrokerLoad和SparkLoad中,一个导入作业的执行流程主要分为5个阶段,如下图所示:
每个阶段的描述如下:PENDING该阶段是指提交导入作业后,等待FE调度执行。ETL该阶段执行数据的预处理,包括清洗、分区、排序、聚合等。
说明:如果是BrokerLoad作业,该阶段会直接完成。LOADING该阶段先对数据进行清洗和转换,然后将数据发送给BE处理。当数据全部导入后,进入等待生效过程,此时,导入作业的状态依旧是LOADING。FINISHED在导入作业涉及的所有数据均生效后,作业的状态变成FINISHED,此时,导入的数据均可查询。FINISHED是导入作业的最终状态。CANCELLED在导入作业的状态变为FINISHED之前,您可以随时取消作业。另外,如果导入出现错误,StarRocks系统也会自动取消导入作业。作业取消后,进入CANCELLED状态。CANCELLED也是导入作业的一种最终状态。3)导入方式
StarRocks提供StreamLoad、BrokerLoad、RoutineLoad、SparkLoad和INSERTINTO多种导入方式,满足您在不同业务场景下的数据导入需求。
下图详细展示了在各种数据源场景下,应该选择哪一种导入方式:
StarRocks支持导入如下数据类型:整型类:包括TINYINT、SMALLINT、INT、BIGINT和LARGEINT。举例:110001234。浮点类:包括FLOAT、DOUBLE和DECIMAL。举例:1。1、0。23、。356。日期类:包括DATE和DATETIME。举例:20171003、2017061312:34:03。字符串类:包括CHAR和VARCHAR。举例:Iamastudent、a。NULL值:举例:N。五、数据提取
StarRocks拥有Export一种将数据导出并存储到其他介质上的功能。该功能可以将用户指定的表或分区的数据,以文本的格式,通过Broker进程导出到远端存储上,如HDFS阿里云OSSAWSS3(或者兼容S3协议的对象存储)等。
导出作业的执行流程
上图描述的处理流程主要包括:用户提交一个Export作业到FE。PENDING阶段:FE生成一个ExportPendingTask,向BE发送snapshot命令,对所有涉及到的Tablet做一个快照,并生成多个查询计划。EXPORTING阶段:FE生成一个ExportExportingTask,BE和Broker会根据FE生成的查询计划配合完成数据导出工作。
其实这里只是稍微介绍了StarRocks核心概念,想要了解更多StarRocks,请查看官方文档,https:docs。starrocks。comzhcnmainintroductionStarRocksintro,有什么疑问也欢迎给我留言哦
欧锦男篮西班牙VS德国西班牙最近的10场比赛取得了8胜2负的成绩,虽然在近两轮的比赛中能场均拿下101分,但是场均的失分也达到了92分。他们的比赛有些太激进了,上场比赛对阵芬兰,他们一度落后15分之……
护肤品的好坏如何辨别在换季的季节,许多人会发现自己的皮肤状态可能不是很好,皮肤特别的敏感、干燥、粗糙,尤其是在秋冬季节,这种情况就特别的明显,甚至会感觉到皮肤特别干裂、缺水。而皮肤状态不好的……
跌出贵州民企前十!75岁陶华碧不惜露脸带货,却带不动老干妈?就在前几天,贵州省公布的2022民营企业100强榜单中,老干妈跌出了前十!老干妈,那可是贵州的一张名片呀,这是十几年来第一次跌出了民企的前十名。更让人揪心的是,这是老干妈……
牙茅通策医疗今年前三季度业绩下滑,公司称集采后种植牙放量可期记者黄华编辑谢欣10月24日晚,牙茅通策医疗披露今年第三季度报告。期内,公司实现营收8。21亿元,同比增长0。29;实现归母净利润2。2亿元,同比减少18。47;实……
梦天已就位!看看中国空间站专属座驾有多牛10月25日上午,梦天实验舱与长征五号B遥四运载火箭组合体,在海南文昌航天发射场进行垂直转运,近日择机发射。梦天实验舱升空后,将在轨与天和核心舱和问天实验舱组合体完成组装建造,……
三季度国内智能手机市场手机份额公布,vivo蝉联第一时间来到2022年第四季度,关于上一季度的智能手机市场调查报告正在陆续出现。现在,Canalys发布了2022年第三季度国内智能手机市场的整体出货情况报告。报告中提到,2……
国际米兰连续两年晋级欧冠16强,卢卡库复出,巴萨全明星阵却出在第5轮欧冠小组赛之后,国际米兰已连续两届欧冠比赛晋级16强了,回顾国际米兰在本届欧冠比赛的成绩来看,其实除了02输给了拜仁不算意外,反而是两回合对战巴萨都能保全不败之曲,这是……
历史性时刻!马龙迎来振奋喜讯,官方盛赞你配得上历史最佳北京时间10月27日,中国乒乓球传来最新消息,据国内媒体《北京青年报》报道,WTT官方针对新乡世界杯决赛进行了点评,他们撰文盛赞马龙配得上历史最佳,而这也引来了很多球迷的关注和……
在圣马丁仰望飞机来源:人民网人民日报海外版周蕊近照。作者供图去年底,正值北美寒冬,温度达到零下十几摄氏度,刺骨的寒风呼啸,时常伴有鹅毛大雪纷飞。正巧此时节假日颇多,我去了加勒比海上……
山东又一小岛走红,景色不输三亚,安逸的宛如置身画中山东有一座小岛,靠着一岛跨两海的景色火了,它的景点可一点也不输三亚。有美景有美食,还有特色民宿,让很多前去旅游的游客都赞不绝口。去过三亚的都知道,三亚的风景是很好的,三亚……
关于碳水化合物的分类关于碳水化合物的种类不同的碳水化合物都具有不同的形式和功效,了解碳水化合物的种类和其对身体的作用至关重要包括哪些类型能快速恢复消耗的肌糖原,哪些类型能在比赛中维持血糖水平……
40岁以后,保持3个日常好习惯,让你身体健康不掉队以前听人说,年过40以后,身体就开始走下坡路!很多人站出来表示不服,我这身体吃门门香,身体倍儿棒,咋会到40岁就身体健康走下坡路呢!可身边的例子一个又一个的告诉我们,年过……