DynamoDB
本来想写写进程、线程、轻量级线程、goroutine还有协程(coroutine),为什么我把goroutine单独列出来是因为它不是协程,所有翻译成协程的都是偷用概念,把比线程轻量的都叫做协程。算了,先不纠结这个,今天想写写DynamoDB,记录下经历。 就如官网描述到的
本来想写写进程、线程、轻量级线程、goroutine还有协程(coroutine),为什么我把goroutine单独列出来是因为它不是协程,所有翻译成协程的都是偷用概念,把比线程轻量的都叫做协程。算了,先不纠结这个,今天想写写DynamoDB,记录下经历。
就如官网描述到的,无限扩展,好吧,具体实现也不得而知,但这个无限扩展的前提是诸多限制。在确认DynamoDB是否适口你的项目使用的时候,记得多分析它的限制,否则迟早会成为项目的瓶颈,或者减缓业务的开发。
首先,DynamoDB统计不友好,想统计它的东西?最好还是放弃这个念头,扫描一遍的代价大得不可思议。在用DynamoDB之前,先弄好你的日志系统。
其次,它不是缓存,虽然是说SSD搞的,但是连这个东西(HTTPS)的代价不是普通缓存所会做的,就它内部查询性能来看,也是几十上百毫秒级别的。
再次,不要以为这个东西很容易用,各种SDK各种坑,拿python boto为例子,两个版本的实现,各自残缺,有些功能SDK根本提供不了,你要做好写RESTful requests的准备。
最后,你要是会看英文且真的想用DynamoDB就别继续往下看了,直接看官网文档各种详尽和指引,以下只是个人心得和坑的摘录。
第一个坑是数据类型,嗯,不完全符合JSON,也就是说,这个要做点格式转换,前不久才出了List和Map的支持,叫文档类型,官方建议可以把JSON压缩成Binary,这...。一条项目(就是一条record,叫item)最大存储容量为400KB(只是英文文档这样写,中文文档还没更新,依然写着64K,这有点小,除此以外,中文文档残缺不全,不值一嗔),这个还可以。读/写流量限制预设(Provisioned Throughput)是一个最大的坑,以流量限定读写速率和容量。单个读单位可在1秒内读1次且4KB以内的内容,40KB就要10个读单位,同样地,单个写单位每秒可写入1次且1KB以内内容。
第二个坑来了,就是这个读/写流量限制预设,全局二级索引是和主表分开预设流量计算。最坑在于,倘若你想写入主表,主表的预设流量是够的而全局二级索引预设流量不够,这样就会插不进,报错,这样使得全局二级索引和新建一张表无异,新建一张表还更灵活。预设流量的另一个坑是,你的hashkey(整个数据库以hashkey作为主键,不知道的请到官网中文版补习)必须hash得均匀才能得到预设流量的最大效用。比如说,你预设了1000个读(预设读容量超过10000还需要递表申请),amazon帮你自动分在20个区存放,那么你每个区只会获得50个读的流量,假如你现在急着要读某一类别的数据,并且这一类别的不小心集中在某一区域,不好意思,你的消费将乘以个几倍几十倍(amazon的服务本身就贵)。如果你要强一致性读(默认是不强一致性读的,不懂的自己脑补),那么将会消耗两倍于脏读的读单位。
第三大坑是索引,上面说到的全局索引是一个坑,还有一种叫二级本地索引也是一个坑,它居然有一条单个hashkey索引内容不超过10G的规定,这个索引内容投影属性*(这个概念请看官网)。这就是说,当你索引加投影单个item有200个字节(200个字节真心不多吧,一个uuid随便都32byte了,当然,你可以选择压缩...),200字节的情况下,该hashkey最多可以包含的条目是5000万条,这个规定直接给人限死了,你不能拿单个hashkey来玩,更别做太多投影。此外,索引是不能添加修改删除的,只能跟随表创建时添加。虽然有10G这个限定,但我觉得它的RangeKey和本地二级索引还是比较独特的,可以解决很大一部分的需求。前提是,最深的索引就是二级,你要做三级四级的索引就要想一下办法了,这个想一下办法也可以再解决一大部分的需求吧。
第四,别考虑太多事务啊原子操作之类,它做不了,简单的自增还是可以的。
最后就是SDK,如果你只是简单的使用,python的SDK boto没什么大问题,但你考虑到并发冲突,部分属性修改兼上是否覆盖写入等等的问题的时候,boto压根就不能解决,这就需要又花费一大块精力去手工Restful了,当然,如果你想用上tonado,没有现成的异步模块可用。
如果你已经跳过上述的坑,相信离DynamoDB符合你的项目需求已经不远了,当然,性能方面我还没做过多测试,准备上线亿级以上条目的项目了,详情敬请期待。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Apakah proses explorer.exe? Apabila kita menggunakan sistem pengendalian Windows, kita sering mendengar istilah "explorer.exe". Jadi, adakah anda ingin tahu apakah proses ini? Dalam artikel ini, kami akan menerangkan secara terperinci apakah proses explorer.exe dan fungsi serta kesannya. Pertama sekali, explorer.exe ialah proses utama sistem pengendalian Windows Ia bertanggungjawab untuk mengurus dan mengawal Windows Explorer (Window

ccsvchst.exe ialah fail proses biasa yang merupakan sebahagian daripada perisian Symantec Endpoint Protection (SEP), dan SEP ialah penyelesaian perlindungan titik akhir yang dibangunkan oleh syarikat keselamatan rangkaian terkenal Symantec. Sebagai sebahagian daripada perisian, ccsvchst.exe bertanggungjawab untuk mengurus dan memantau proses berkaitan SEP. Pertama, mari kita lihat SymantecEndpointProtection(

Mencari pengedaran Linux yang sempurna untuk memberi nafas baharu kepada komputer lama atau rendah anda? Jika ya, maka anda telah datang ke tempat yang betul. Dalam artikel ini, kami akan meneroka beberapa pilihan utama kami untuk pengedaran Linux ringan yang disesuaikan khusus untuk perkakasan yang lebih lama atau kurang berkuasa. Sama ada motivasi di sebalik ini adalah untuk menghidupkan semula peranti yang sudah tua atau hanya memaksimumkan prestasi mengikut bajet, pilihan yang ringan ini pasti sesuai. Mengapa memilih pengedaran Linux yang ringan? Terdapat beberapa kelebihan untuk memilih pengedaran Linux yang ringan, yang pertama mendapat prestasi terbaik pada sumber sistem yang paling sedikit, yang menjadikannya sesuai untuk perkakasan lama dengan kuasa pemprosesan, RAM dan ruang storan terhad. Selain itu, dengan sumber yang lebih intensif

Dalam sistem Linux, proses zombi adalah proses khas yang telah ditamatkan tetapi masih kekal dalam sistem. Walaupun proses zombi tidak menggunakan banyak sumber, jika terlalu banyak, ia boleh menyebabkan kehabisan sumber sistem. Artikel ini akan memperkenalkan cara mengalih keluar proses zombi dengan betul untuk memastikan operasi normal sistem. Proses zombi 1Linux Selepas proses anak menyelesaikan tugasnya, jika proses induk tidak menyemak status dalam masa, proses anak akan menjadi proses zombi. Proses anak sedang menunggu pengesahan daripada proses induk, dan sistem tidak akan mengitar semulanya sehingga ia selesai. Jika tidak, proses zombi akan terus tergantung dalam sistem. Untuk menyemak sama ada terdapat proses zombi dalam sistem, anda boleh menjalankan arahan atas untuk melihat semua proses yang sedang berjalan dan kemungkinan proses zombi. Hasil daripada arahan 'atas' boleh dilihat dari rajah di atas dalam Linux.

Penjelasan terperinci tentang kaedah pelarasan keutamaan proses Linux Dalam sistem Linux, keutamaan proses menentukan susunan pelaksanaannya dan peruntukan sumber dalam sistem. Melaraskan keutamaan proses secara munasabah boleh meningkatkan prestasi dan kecekapan sistem. Artikel ini akan memperkenalkan secara terperinci cara melaraskan keutamaan proses dalam Linux dan memberikan contoh kod khusus. 1. Gambaran keseluruhan keutamaan proses Dalam sistem Linux, setiap proses mempunyai keutamaan yang berkaitan dengannya. Julat keutamaan biasanya -20 hingga 19, di mana -20 mewakili keutamaan tertinggi dan 19 mewakili

Cara Menjeda Kemas Kini Proses Pengurus Tugas dalam Windows 11 dan Windows 10 Tekan CTRL+Kekunci Tetingkap+Padam untuk membuka Pengurus Tugas. Secara lalai, Pengurus Tugas akan membuka tetingkap Proses. Seperti yang anda lihat di sini, semua apl bergerak tanpa henti dan sukar untuk menunjukkannya apabila anda ingin memilihnya. Jadi, tekan CTRL dan tahan, ini akan menjeda pengurus tugas. Anda masih boleh memilih aplikasi dan juga tatal ke bawah, tetapi anda mesti menahan butang CTRL pada setiap masa.

Golang (bahasa Go) ialah bahasa pengaturcaraan yang dibangunkan oleh Google, bertujuan untuk memberikan pengalaman pengaturcaraan yang cekap, ringkas, serentak dan ringan. Ia mempunyai ciri konkurensi terbina dalam dan menyediakan alat yang berkuasa kepada pembangun untuk berprestasi baik dalam situasi konkurensi tinggi. Artikel ini akan menyelidiki sebab mengapa Golang sesuai untuk pemprosesan konkurensi tinggi dan memberikan contoh kod khusus untuk digambarkan. Model konkurensi Golang Golang menggunakan model konkurensi berdasarkan goroutine dan saluran. goro

Mengapa proses dalam Linux tidur? Dalam sistem pengendalian Linux, sesuatu proses boleh menjadi tidak aktif disebabkan oleh beberapa sebab dan keadaan yang berbeza. Apabila sesuatu proses berada dalam keadaan tidak aktif, ini bermakna proses itu digantung buat sementara waktu dan tidak boleh meneruskan pelaksanaan sehingga syarat-syarat tertentu dipenuhi sebelum ia boleh dibangkitkan untuk meneruskan pelaksanaan. Seterusnya, kami akan memperkenalkan secara terperinci beberapa situasi biasa apabila proses memasuki hibernasi dalam Linux, dan menggambarkannya dengan contoh kod tertentu. Menunggu I/O selesai: Apabila proses memulakan operasi I/O (seperti membaca
