2021年10月

一位数学老师将微积分课程放在 P 站上大获成功

YouTube 上的教学视频市场已经饱和,一位数学教师 决定 将自己的微积分课程视频上传到一个大型视频网站 P 站。他的频道中放了 200 多个明显不性感的黑板课程,涉及微分方程等主题,但是获得了 160 万浏览量,付费课程年收入达到了 25 万美元以上。有用户表示数学期末考试要用到。他的微积分视频包括了三个部分,第一部分是免费的,第二和第三部分则要付费。

老王点评:这可是要叫“老师”的。

卡马克为已停产的 VR 头盔推送解锁版操作系统

开发了《DOOM》游戏的神级程序员约翰•卡马克加入了 Oculus 公司,并推动该公司为其已经停产的 Oculus Go 头盔显示器推出了一个 解锁版的操作系统更新,允许对超过 200 万台现有设备进行“完全 root 访问”。他在上个月 宣布 了这一更新计划,说这是他“多年来一直在推动的事情”。解锁可以让这些硬件在未来继续保持完整的功能,比如“二十年后更新到最新版本”。运行解锁操作系统的硬件将不再检查内核级别的签名,开发者可以为它创建新的底层软件。

老王点评:如果每个硬件都能自由,那即便过时,也能发挥很多很好玩的作用。

智能助手收集了很多数据

根据 Reviews.org一项调查,亚马逊的 Alexa 收集了 48 个可能的数据点中的 37 个;三星的 Bixby 收集了 34 个数据点,而微软的 Cortana 是 32个,苹果的 Siri 30 个,谷歌的智能助理只收集了 28 个。所有这五项服务都收集你的姓名、电话号码、设备位置和 IP 地址;你的联系人的姓名和号码;你的互动历史;以及你使用的应用程序。76% 的美国人报告说他们使用智能助手,但 61% 的人担心这些程序和设备总是在后台听他们说话。

老王点评:家里有个“人”一直悄悄等你叫它,这其实挺可怕的。

用这些开源工具从你的硬盘驱动器中擦除数据。

 title=

保持数据安全的最好方法之一是只向加密的硬盘驱动器写入数据。在一个标准的硬盘上,只要把硬盘挂载就可以查看数据,就像 U 盘一样,甚至可以用 ScalpelTestdisk 等工具显示和恢复已删除的数据。但是在一个加密的驱动器上,如果没有解密密钥(通常是你在挂载驱动器时输入的密码),数据是无法被读取的。

加密可以在你安装操作系统时建立,有些操作系统甚至可以在安装后的任何时候激活加密功能。

但是,当你卖掉一台电脑或更换一个一开始就没有被加密的驱动器时,你该怎么办呢?

与从一开始就加密你的数据相比,最好的办法是在你用完硬盘后删除数据。

负责任的看管者

我经常被要求帮助客户升级一台旧电脑。无一例外,他们更愿意帮助我回收它们,使它们能被别人使用。我很乐意翻新这些旧电脑,用较新的固态驱动器来改装它们,极大地提高性能。

然而,把一个旧驱动器扔进垃圾桶并不是一个好主意。它需要被擦除,然后被妥善处理。我没有把硬盘留在原来的电脑里,而是把它们取出来,放在一个硬盘盒里,然后把它们连接到我的 Linux 电脑上。有几个 Linux 工具可以很容易地完成这个任务。其中一个是 Gnu Shred

GNU Shred

$ sudo shred -vfz /dev/sdX

Shred 有许多选项:

  • -n - 覆盖的次数。默认是三次。
  • -u - 覆盖并删除。
  • -s - 要粉碎的字节数。
  • -v - 显示扩展信息。
  • -f - 必要时强制改变权限以允许写入。
  • -z - 最后用 0 覆盖来隐藏粉碎。

使用 shred --help 获取更多信息

ShredOS

ShredOS 是一个 即用 Live Linux 发行版,它的唯一目的是清除驱动器的全部内容。它是在一个名为 DBAN 的类似发行版停止维护后开发的。它使用 nwipe 应用,它是 DBAN 的 dwipe 的一个分叉。你可以通过下载 32 位或 64 位镜像,并在 Linux 和 macOS 上使用 dd 命令将其写入驱动器来制作一个可启动的 USB 驱动器:

$ sudo dd if=shredos.img of=/dev/sdX bs=4M status=progress

另外,你可以在 Linux、macOS 和 Windows 上使用 Etcher 工具烧录。

dd 命令

清除驱动器的一个常见方法是使用 Linux 的 dd 命令。几乎所有的 Linux 安装都安装了 dd 工具。确保该驱动器没有被挂载。

$ sudo umount /dev/sdXY -l

如果你想在整个目标磁盘上写零,执行以下命令。这可能需要一个整个通宵。

$ sudo dd if=/dev/urandom of=/dev/sdX bs=10M

警告:请确保你知道你在系统中的位置,并以正确的驱动器为目标,这样你就不会意外地删除自己的数据。

Nvme-cli

如果你的计算机包含一个较新的 NVMe 驱动器,你可以安装 nvme-cli 程序,并使用 sanitize 选项来清除你的驱动器。

nvme sanitize help 命令提供了选项列表:

  • --no-dealloc-d - 净化后不解除分配。
  • --oipbp-i - 每次覆写后反转模式。
  • --owpass=-n - 覆写次数。
  • --ause-u - 允许无限制净化退出。
  • --sanact=-a - 净化动作。
  • --ovrpat=-p - 覆写模式。

下面是我使用的命令:

$ sudo nvme sanitize /dev/nvme0nX

这里的警告与格式化过程相同:首先备份重要的数据,因为这个命令会擦除这些数据!

信息管理

你保存在计算机上的信息是很重要的。它属于你,也属于其他任何人。当你卖掉一台电脑或处理一个硬盘时,确保你已经用这些很棒的工具之一清除了你的数据。


via: https://opensource.com/article/21/10/linux-tools-erase-data

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

基于 Debian 的 MX Linux 21 现已经推出,带来了一些不错的改进。

MX Linux 是一个基于 Debian 的 Linux/GNU 发行版,旨在追求优雅、稳定和性能。

我们之前报道过它的 尚处于测试阶段的新 Fluxbox 版,但现在稳定版出来了。让我们来探讨一下 MX Linux 21 “Wildflower” 的新内容。

MX Linux 21 主要亮点

MX Linux 21 基于 Debian 11 “Bullseye”,运行 Linux 5.10LTS 内核。在这次的新更新中,你可以发现一些新的应用和对当前应用的升级。

“Wildflower” 系列包括一个带有 Fluxbox 1.3.7 的新版本,它可以使旧电脑重新焕发活力。补充一下,Fluxbox 是一个窗口管理器,可以在高端计算机上无缝工作,但资源占用很少。

它的安装程序有一个新的分区选择区,支持 LVM(逻辑卷管理器)。

MX Linux 21 有一个漂亮的图形化安装程序

当启动系统时,无论你是使用 临时启动 live boot 还是持久化使用,你都可以选择使用新的 UEFI 临时系统启动菜单,而不是旧的控制台菜单。

对于桌面环境,Xfce 4.16 和 KDE Plasma 5.20 都是最新版本。

然而,还没有 Xfce 版。

它新提供的一个方便的工具是在管理任务中默认使用管理员密码。然而,如果你不需要它,你可以把它关掉。

其他改进

  • 安装程序和临时系统已经更新到最新版本。
  • 大部分的翻译仍在进行中。另一方面,有些部分的翻译工作完成的很好的。
  • 默认软件包集现在包括 Mesa Vulkan 驱动。
  • 对某些 Realtek 硬件的 Wi-Fi 有了更好的支持。
  • 已默认启用 Debian 安全库。
  • Xfce 有了一些改进,其中之一是为 Thunar 文件管理器增加了一个 samba 共享插件。
  • KDE 对其文件管理器 Dolphin 进行了修复。

总结

MX Linux 21 是它目前最新的稳定版本。更加优雅,性能更强,因此更加适合作为日常使用。

尽管与其他流行的选择相比,MX Linux 是一个相对较新的 Linux/GNU 发行版,但它在提供一个由 Debian、MX 存储库和 antiX Linux 支持的完整操作系统方面有很大的潜力。

你可以参考 官方公告 了解更多细节。

你对这个版本有什么看法?你碰巧在使用 MX Linux 吗?请在下面的评论中分享你的想法。


via: https://news.itsfoss.com/mx-linux-21-release/

作者:Omar Maarof 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

微信允许搜索引擎索引公众号内容了?不,是 bug

一直以来,微信公众号的内容是不允许外部搜索引擎的爬取和索引的。而据 路透社报道,微信公众号上的内容和视频已经向外部搜索引擎开放。但是,这实际上是个 bug,是腾讯意外删除了微信域名下的 robots.txt。这个文件是一个指导搜索引擎可索引范围的行业默认规则。现在该文件 已经恢复 禁止外部搜索引擎爬取的状态。

老王点评:看,这才是信息孤岛,开放是要允许出去,也允许进来。

交通摄像头将 T 恤上的字母识别为汽车

英国《每日邮报》报道称,萨里郡的一名男子最近收到一张 90 英镑罚单:理由是他在 120 英里外的巴斯市驾车驶入了公交车道。因为没有做过这样的事,他仔细查看了打印在罚单上的照片证据。他惊讶地发现,照片上是一个正在走路的女人。因为她的 T 恤前襟有 KNITTER 的字样。被识别为车牌 KN19TER。

老王点评:真不靠谱的 AI,问题是,谁来给 AI 把关呢?

树莓派史上首次涨价

去年 2 月,树莓派 4 2GB 版的价格从 45 美元“永久”降至 35 美元,1GB 型号的产品则停产。但由于全球供应链的短缺,树莓派贸易公司宣布 2GB 版的树莓派重新回到 45 美元,而 1GB 版则以之前的 35 美元价格重新回来了。该公司表示涨价只是暂时的,他们今年只能设法达成 2020 年约 700 万台的出货量。主要短缺的是树莓派 Zero 和树莓派 4 2GB。

老王点评:全球供应链紧张可见一斑。

使用此 Linux 命令保持日志文件更新。

 title=

日志非常适合找出应用程序在做什么或对可能的问题进行故障排除。几乎我们处理的每个应用程序都会生成日志,我们希望我们自己开发的应用程序也生成日志。日志越详细,我们拥有的信息就越多。但放任不管,日志可能会增长到无法管理的大小,反过来,它们可能会成为它们自己的问题。因此,最好将它们进行裁剪,保留我们需要的那些,并将其余的归档。

基本功能

logrotate 实用程序在管理日志方面非常出色。它可以轮转日志、压缩日志、通过电子邮件发送日志、删除日志、归档日志,并在你需要时开始记录最新的。

运行 logrotate 非常简单——只需要运行 logrotate -vs state-file config-file。在上面的命令中,v 选项开启详细模式,s 指定一个状态文件,最后的 config-file 是配置文件,你可以指定需要做什么。

实战演练

让我们看看在我们的系统上静默运行的 logrotate 配置,它管理我们在 /var/log 目录中找到的大量日志。查看该目录中的当前文件。你是否看到很多 *.[number].gz 文件?这就是 logrotate 正在做的。你可以在 /etc/logrotate.d/rsyslog 下找到此配置文件。我的配置文件如下:

/var/log/syslog
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                reload rsyslog > /dev/null 2>&1 || true
        endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages

{
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                reload rsyslog > /dev/null 2>&1 || true
        endscript
}

该文件首先定义了轮转 /var/log/syslog 文件的说明,这些说明包含在后面的花括号中。以下是它们的含义:

  • rotate 7: 保留最近 7 次轮转的日志。然后开始删除超出的。
  • daily: 每天轮转日志,与 rotate 7 一起使用,这意味着日志将保留过去 7 天。其它选项是每周、每月、每年。还有一个大小参数,如果日志文件的大小增加超过指定的限制(例如,大小 10k、大小 10M、大小 10G 等),则将轮转日志文件。如果未指定任何内容,日志将在运行 logrotate 时轮转。你甚至可以在 cron 中运行 logrotate 以便在更具体的时间间隔内使用它。
  • missingok: 如果日志文件缺失也没关系。不要惊慌。
  • notifempty: 日志文件为空时不轮转。
  • compress: 开启压缩,使用 nocompress 关闭它。
  • delaycompress: 如果压缩已打开,则将压缩延迟到下一次轮转。这允许至少存在一个轮转但未压缩的文件。如果你希望昨天的日志保持未压缩以便进行故障排除,那么此配置会很有用。如果某些程序在重新启动/重新加载之前可能仍然写入旧文件,这也很有帮助,例如 Apache。
  • postrotate/endscript: 轮转后运行此部分中的脚本。有助于做清理工作。还有一个 prerotate/endscript 用于在轮转开始之前执行操作。

你能弄清楚下一节对上面配置中提到的所有文件做了什么吗?第二节中唯一多出的参数是 sharedscripts,它告诉 logrotate 在所有日志轮转完成之前不要运行 postrotate/endscript 中的部分。它可以防止脚本在每一次轮转时执行,只在最后一次轮转完成时执行。

看点新的东西

我使用下面的配置来处理我系统上的 Nginx 的访问和错误日志。

/var/log/nginx/access.log
/var/log/nginx/error.log  {
        size 1
        missingok
        notifempty
        create 544 www-data adm
        rotate 30
        compress
        delaycompress
        dateext
        dateformat -%Y-%m-%d-%s
        sharedscripts
        extension .log
        postrotate
                service nginx reload
        endscript
}

上面的脚本可以使用如下命令运行:

logrotate -vs state-file /tmp/logrotate

第一次运行该命令会给出以下输出:

reading config file /tmp/logrotate
extension is now .log

Handling 1 logs

rotating pattern: /var/log/nginx/access.log
/var/log/nginx/error.log   1 bytes (30 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/access.log
  log needs rotating
considering log /var/log/nginx/error.log
  log does not need rotating
rotating log /var/log/nginx/access.log, log->rotateCount is 30
Converted ' -%Y-%m-%d-%s' -> '-%Y-%m-%d-%s'
dateext suffix '-2021-08-27-1485508250'
glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding logs to compress failed
glob finding old rotated logs failed
renaming /var/log/nginx/access.log to /var/log/nginx/access-2021-08-27-1485508250.log
creating new /var/log/nginx/access.log mode = 0544 uid = 33 gid = 4
running postrotate script
* Reloading nginx configuration nginx

第二次运行它:

reading config file /tmp/logrotate
extension is now .log

Handling 1 logs

rotating pattern: /var/log/nginx/access.log
/var/log/nginx/error.log   1 bytes (30 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/access.log
  log needs rotating
considering log /var/log/nginx/error.log
  log does not need rotating
rotating log /var/log/nginx/access.log, log->rotateCount is 30
Converted ' -%Y-%m-%d-%s' -> '-%Y-%m-%d-%s'
dateext suffix '-2021-08-27-1485508280'
glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
compressing log with: /bin/gzip
renaming /var/log/nginx/access.log to /var/log/nginx/access-2021-08-27-1485508280.log
creating new /var/log/nginx/access.log mode = 0544 uid = 33 gid = 4
running postrotate script
* Reloading nginx configuration nginx

第三次运行它:

reading config file /tmp/logrotate
extension is now .log

Handling 1 logs

rotating pattern: /var/log/nginx/access.log
/var/log/nginx/error.log   1 bytes (30 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/access.log
  log needs rotating
considering log /var/log/nginx/error.log
  log does not need rotating
rotating log /var/log/nginx/access.log, log->rotateCount is 30
Converted ' -%Y-%m-%d-%s' -> '-%Y-%m-%d-%s'
dateext suffix '-2021-08-27-1485508316'
glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
compressing log with: /bin/gzip
renaming /var/log/nginx/access.log to /var/log/nginx/access-2021-08-27-1485508316.log
creating new /var/log/nginx/access.log mode = 0544 uid = 33 gid = 4
running postrotate script
* Reloading nginx configuration nginx

状态文件的内容如下所示:

logrotate state -- version 2
"/var/log/nginx/error.log" 2021-08-27-9:0:0
"/var/log/nginx/access.log" 2021-08-27-9:11:56

本文首发于作者个人博客,经授权改编。


via: https://opensource.com/article/21/10/linux-logrotate

作者:Ayush Sharma 选题:lujun9972 译者:perfiffer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

速度和可扩展性是 Apache Cassandra 不变的追求;来学习一下如何充分发挥它的专长吧。

 title=

Apache Cassandra 是一个数据库,但又不是一个简单的数据库;它是一个复制数据库,专为可扩展性、高可用性、低延迟和良好性能而设计调整。Cassandra 可以帮你的数据在区域性中断、硬件故障时,以及很多管理员认为数据量过多的情况下幸免于难。

全面掌握数据分区知识,你就能让 Cassandra 集群实现良好的设计、极高的性能和可扩展性。在本文中,我将探究如何定义分区,Cassandra 如何使用这些分区,以及一些你应该了解的最佳实践方案和已知问题。

基本概念是这样的: 供数据库关键函数(如数据分发、复制和索引化)使用的原子单元,单个这样的数据块就是一个分区。分布式数据系统通常会把传入的数据分配到这些分区中,使用简单的数学函数(例如 identity 或 hashing 函数)执行分区过程,并用得到的 “分区键” 对数据分组,进一步再形成分区。例如,假设传入数据是服务器日志,使用 “identity” 分区函数和每个日志的时间戳(四舍五入到小时值)作为分区键,我们可以对这些数据进行分区,实现每个分区各保存一小时的日志的目的。

Cassandra 中的数据分区

Cassandra 作为分布式系统运行,并且符合前述数据分区原则。使用 Cassandra,数据分区依赖于在集群级别配置的算法和在表级别配置的分区键。

 title=

Cassandra 查询语言(CQL)使用大家很熟悉的 SQL 表、行、列等术语。在上面的示例图中,表配置的主键中包含了分区键,具体格式为: 主键 Primary Key = 分区键 Partition Key + [ 聚簇列 Clustering Columns ] 。

Cassandra 中的主键既定义了唯一的数据分区,也包含着分区内的数据排列依据信息。数据排列信息取决于聚簇列(非必需项)。每个唯一的分区键代表着服务器(包括其副本所在的服务器)中管理的若干行。

在 CQL 中定义主键

接下来的四个示例演示了如何使用 CQL 语法表示主键。定义主键会让数据行分到不同的集合里,通常这些集合就是分区。

定义方式 1(分区键:log\_hour,聚簇列:无)

CREATE TABLE server_logs(
   log_hour TIMESTAMP PRIMARYKEY,
   log_level text,
   message text,
   server text
   )

这里,有相同 log_hour 的所有行都会进入同一个分区。

定义方式 2(分区键:log\_hour,聚簇列:log\_level)

CREATE TABLE server_logs(
   log_hour TIMESTAMP,
   log_level text,
   message text,
   server text,
   PRIMARY KEY (log_hour, log_level)
   )

此定义方式与方式 1 使用了相同的分区键,但此方式中,每个分区的所有行都会按 log_level 升序排列。

定义方式 3(分区键:log\_hour,server,聚簇列:无)

CREATE TABLE server_logs(
   log_hour TIMESTAMP,
   log_level text,
   message text,
   server text,
   PRIMARY KEY ((log_hour, server))
   )

在此定义中,serverlog_hour 字段都相同的行才会进入同一个分区。

定义方式 4(分区键:log\_hour,server,聚簇列:log\_level)

CREATE TABLE server_logs(
   log_hour TIMESTAMP,
   log_level text,
   message text,
   server text,
   PRIMARY KEY ((log_hour, server),log_level)
   )WITH CLUSTERING ORDER BY (column3 DESC);

此定义方式与方式 3 分区相同,但分区内的行会依照 log_level 降序排列。

Cassandra 如何使用分区键

Cassandra 依靠分区键来确定在哪个节点上存储数据,以及在需要时定位数据。Cassandra 通过查看表中的分区键来执行这些读取和写入操作,并使用 令牌 tokens (一个 -2^{63}−263 到 +2^{63}-1+263−1 范围内的 long 类型值)来进行数据分布和索引。这些令牌通过分区器映射到分区键,分区器使用了将分区键转换为令牌的分区函数。通过这种令牌机制,Cassandra 集群的每个节点都拥有一组数据分区。然后分区键在每个节点上启用数据索引。

 title=

图中显示了一个三节点的 Cassandra 集群以及相应的令牌范围分配。这只是一个简单的示意图:具体实现过程使用了 Vnodes

数据分区对 Cassandra 集群的影响

用心的分区键设计对于实现用例的理想分区大小至关重要。合理的分区可以实现均匀的数据分布和强大的 I/O 性能。分区大小对 Cassandra 集群有若干需要注意的影响:

  • 读取性能 —— 为了在磁盘上的 SSTables 文件中找到分区,Cassandra 使用缓存、索引和索引摘要等数据结构。过大的分区会降低这些数据结构的维护效率,从而对性能产生负面影响。Cassandra 新版本在这方面取得了长足的进步:特别是 3.6 及其以上版本的 Cassandra 引擎引入了存储改进,针对大型分区,可以提供更好的性能,以及更强的应对内存问题和崩溃的弹性。
  • 内存使用 —— 大分区会对 JVM 堆产生更大的压力,同时分区的增大也降低了垃圾收集机制的效率。
  • Cassandra 修复 —— 大分区使 Cassandra 执行修复维护操作(通过跨副本比较数据来保持数据一致)时更加困难。
  • “墓碑”删除 —— 听起来可能有点骇人,Cassandra 使用称为“ 墓碑 tombstones ”的独特标记来记录要删除的数据。如果没有合适的数据删除模式和压缩策略,大分区会使删除过程变得更加困难。

虽然这些影响可能会让人更倾向于简单地设计能产生小分区的分区键,但数据访问模式对理想的分区大小也有很大影响(有关更多信息,请阅读关于 Cassandra 数据建模 的深入讲解)。数据访问模式可以定义为表的查询方式,包括表的所有 select 查询。 理想情况下,CQL 选择查询应该在 where 子句中只使用一个分区键。也就是说,当查询可以从单个分区,而不是许多较小的分区获取所需数据时,Cassandra 是最有效率的。

分区键设计的最佳实践

遵循分区键设计的最佳实践原则,这会帮你得到理想的分区大小。根据经验,Cassandra 中的最大分区应保持在 100MB 以下。理想情况下,它应该小于 10MB。虽然 Cassandra 3.6 及其以上版本能更好地支持大分区,但也必须对每个工作负载进行仔细的测试和基准测试,以确保分区键设计能够支持所需的集群性能。

具体来说,这些最佳实践原则适用于任何分区键设计:

  • 分区键的目标必须是将理想数量的数据放入每个分区,以支持其访问模式的需求。
  • 分区键应禁止无界分区:那些大小可能随着时间无限增长的分区。例如,在上面的 server_logs 示例中,随着服务器日志数量的不断增加,使用服务器列作为分区键就会产生无界分区。相比之下,使用 log_hour 将每个分区限制为一个小时数据的方案会更好。
  • 分区键还应避免产生分区倾斜,即分区增长不均匀,有些分区可能随着时间的推移而不受限制地增长。在 server_logs 示例中,在一台服务器生成的日志远多于其他服务器的情况下使用服务器列会产生分区倾斜。为了避免这种情况,可以从表中引入另一个属性来强制均匀分布,即使要创建一个虚拟列来这样做,也是值得的。
  • 使用时间元素和其他属性的组合分区键,这对时间序列数据分区很有帮助。这种方式可以防止无界分区,使访问模式能够在查询特定数据时使用时间属性,而且能够对特定时间段内的数据进行删除。上面的每个示例都使用了 log_hour 时间属性来演示这一点。

还有一些工具可用于帮助测试、分析和监控 Cassandra 分区,以检查所选模式是否高效。通过仔细设计分区键,使解决方案的数据和需求保持一致,并遵循最佳实践原则来优化分区大小,你就可以充分利用数据分区,更好地发挥 Cassandra 的可扩展性和性能潜力。


via: https://opensource.com/article/20/5/apache-cassandra

作者:Anil Inamdar 选题:lujun9972 译者:unigeorge 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出