Nosql入门知识
1. NoSQL其实是关系型数据库相对应的,是no relational 即非关系型数据库;web2.0特别是一些用户访问量比较大的网站如:www.taobao.com weibo.com baidu.com 每秒的访问量可能是上万次(10K);传统的关系型数据库 mysql oracle 每秒进行10K次数据查询还可以勉
1. NoSQL其实是关系型数据库相对应的,是no relational 即非关系型数据库;web2.0特别是一些用户访问量比较大的网站如:www.taobao.com weibo.com baidu.com
每秒的访问量可能是上万次(10K);传统的关系型数据库 mysql oracle 每秒进行10K次数据查询还可以勉强应付,但是如果是每秒10K次读写数据库,因为数据库的数据都是卸载磁盘中,所以磁盘IO也是支撑不住每秒10K的读写。
在web的架构中,数据库是最难进行横向扩展的(通过简单的添加机器和硬件,也就是添加一些服务节点来提高负载均衡能力);对于7*24小时在线的网站来说,对关系型数据库进行升级和扩展(分布式扩展--分库分表)是非常痛苦的事情,往往要进行停机维护;但这种对www.taobao.com 来说是非常丑陋的事情。[--可不可以添加几台服务器然后把复制,然后进行负载均衡--]。
NoSQL 是采用key/value的结构来存储数据,而且大多数的NoSQL采用内存来存储数据,一段时间后把数据同步到磁盘中;由于使用内存保存数据很好地解决了高并发读写的问题;其次NoSQL提供了根据key值进行横向分表(比如:用户id,每2000w数据放到一台数据库服务器中的一张用户表中);同时实现了主从数据库互备,这样可以让数据库的动态迁移变得简单,让数据库服务器的横向扩展变得容易了。
2. 分布式数据库的CAP理论
CAP理论是说Consistency(一致性), Availability(可用性), partition tolerance(分布)三部分系统;而且任何系统只会满足两个,不会有任何的系统会同时满足这三个条件;在传统的关系型数据库中是强调C 一致性,但是在满足高可用性(高并发时效率不高),高扩展性(分布式数据库进行横向扩展)存在一定的缺陷。但是NoSQL在进行设计的时候就是针对并发海量数据存储的情况下进行设计的,在这种高并发海量数据下数据一致性并不像银行那样保持数据的强一致性,所以NoSQL·放弃强一致性的追求,从而达到更高的可用性和扩展性,通过“鸽巢原理”达到最终的一致性。
现在的数据库系统肯定是同一个时刻有多个进程对数据库进行读写操作,假设现在有3个进程(A、B、C)对数据库的某表进行操作,
强一致性:A写入的数据x,B、C可以读到数据x
弱一致性:A写入的数据x,B、C一段时间内读不到,最后会读到
最终一致性:是一种特殊的一致性,保证在一段时间内没有数据的更新,但所有的返回都是把最新的数据返回;---缓存的概念,一段时间后把数据更新到数据库,达到最终一致性。
3. 哈希算法
(1). 哈希算法的基本原理:
哈希算法的提出和应用背景,对于一个庞大的字符串数组array,给你一个字符串让你判断它是否在这个字符串数组中并找到它,最好的办法就是把这个庞大的字符串数组构建成一个哈希表,然后在进行查询是否有这个字符串。
(2).构建hash table的过程:一般是采用一个32的整数来代表一个字符串,首先这个array的字符串已经存在内存或者磁盘中,我们要做的只是按照一定的算法把每个字符串映射到一个32位的整数,每个int占4个字节,在字符串中每个字符都占一个字节;这样就建立了字符串与32位整数的映射,然后根据程序大小设定一个hash table的Size(这个Size确保所有的int % Size的值是唯一的--取最大值即可),这个把刚才得到的所有字符串对应的32位整数对这个Size进行取模,这个模值就是此整数在hash table的位置;这个位置与每一个字符串又建立了一个映射关系;这样让你查询这个str是否在array中?
首先,是把这个str,用相同的哈希算法进行编码---->映射到一个32位的int型数据 num
然后,把这个num % Size 获取此字符串在hash table里面的位置;
然后,判断hash table 此位置是否已经有数据占用,如果已经占用说明在array里面有一个字符串对应的32位整数与str的32位整数相同,在一个字符串对应唯一一个32位整数的前提条件下,就说明array里面存在字符串str。
[html]
int GetHashTablePos(char *lpszString, SOMESTRUCTURE *lpTable, int nTableSize)
{ //lpszSring--要查询的字符串;lpTable 哈希表;nTableSize是哈希表的Size
int nHash = HashString(lpszString), nHashPos = nHash % nTableSize;
if (lpTable[nHashPos].bExists && !strcmp(lpTable[nHashPos].pString, lpszString)) //时间复杂度是O(1)
return nHashPos;
else
return -1; //Error value
}
(3). 上面的处理方法是假设一个字符串通过一个哈希算法只得到唯一一个hashcode(32为int整数);但是如果存在两个整数在同一个哈希算法得到同一个hashcode,那这个查询就不正确的,虽然这个可能性比较小,但确实存在这个风险。
采用的解决办法是用多个不同的哈希算法来校验,两个str 在三个不同的哈希算法得到的hashcode都相同的概率是:1/18889465931478580854784;可以认为是OK的。
[html]
int GetHashTablePos(char *lpszString, MPQHASHTABLE *lpTable, int nTableSize)
{
const int HASH_OFFSET = 0, HASH_A = 1, HASH_B = 2;
int nHash = HashString(lpszString, HASH_OFFSET);
int nHashA = HashString(lpszString, HASH_A);
int nHashB = HashString(lpszString, HASH_B);
int nHashStart = nHash % nTableSize, nHashPos = nHashStart;
while (lpTable[nHashPos].bExists)
{
if (lpTable[nHashPos].nHashA == nHashA && lpTable[nHashPos].nHashB == nHashB)
return nHashPos;
else
nHashPos = (nHashPos + 1) % nTableSize;
if (nHashPos == nHashStart)
break;
}
return -1; //Error value
}
这样就可以保证万无一失了!
(4). 常见的哈希算法:MD5 SHA SHA-1等都是常用的哈希算法,而且他们都属于混合哈希算法,除了混合哈希算法还有加法、乘法、除法的哈希算法;
所以,在比较一个文件是否发生变化的方法出了可以用最后修改时间来判断,也可以用其哈希code来比较,比如用MD5来比较,如果其MD5都变化了则文件一定被修改了。
4. Tair 缓存也是一种 基于key/value的NoSQL结构开发的一种缓存机制,其实质也是NoSQL数据库,不过是key/value结构而且是用内存来存储数据,所以用把Tair叫做缓存。
5. 关系型数据库的事务(ACID)
(1). 事务(Transaction):Transaction是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),事务一般由高级数据语言(C++ Java SQL)等写的用户程序引起的,并用begin transaction----end transaction 来界定一个完整的事务
[html]
****
****
****
transaction>
一个完整的事务由begin transaction----end transaction 里面的所有操作组成;在关系型数据库中一个事务可以是一条SQL语句或一组SQL语句或者是一个程序;事务是并发和回滚的基本单位。
(2). 事务的ACID属性:
Atomicity(原子性):一个事务是一个不可分割的完整单元,一个transaction里面的所有操作要么都做完,要么都不做;当中间一个操作失败把所有已经做的操作都回滚!www.2cto.com
Consistency(一致性):数据库在一个事务开始前是一致性的,在这个事务执行完毕后仍然是一致性的;只是从一个一致性状态到另一个一致性状态;但都是一致性的
Isolation(隔离性):一个事务的执行不能被其他事务所打扰,即一个事务内部操作及使用的数据对并发的事务是隔离的,并发执行的事务之间互相不干扰(不理解)!!
Durablity(持久性):也就永久性(Permanence),即一个事务一旦执行完毕,则它对数据库的更新是持久性的,即不受其他操作的影响;也就是事务修改了数据库了
这个ACID的属性是关系型数据库(DBMS)非常重要的属性,在执行数据库操作时必须满足ACID属性,其中AI是我们编程中要注意的地方。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











키미: 단 한 문장이면 단 10초만에 PPT가 완성됩니다. PPT가 너무 짜증나네요! 회의를 하려면 PPT가 있어야 하고, 주간 보고서를 작성하려면 PPT가 있어야 하며, 누군가를 부정행위를 했다고 비난하려면 PPT를 보내야 합니다. 대학은 PPT 전공을 공부하는 것과 비슷합니다. 수업 시간에 PPT를 보고 수업 후에 PPT를 하는 거죠. 아마도 데니스 오스틴이 37년 전 PPT를 발명했을 때, 언젠가 PPT가 이렇게 널리 보급될 것이라고는 예상하지 못했을 것입니다. 우리가 PPT를 만들면서 힘들었던 경험을 이야기하면 눈물이 납니다. "20페이지가 넘는 PPT를 만드는 데 3개월이 걸렸고, 수십 번 수정했어요. PPT를 보면 토할 것 같았어요. 한창 때는 하루에 다섯 장씩 했는데, 숨소리까지 냈어요." PPT였어요." 즉석 회의가 있으면 해야죠.

베이징 시간으로 6월 20일 이른 아침, 시애틀에서 열린 최고의 국제 컴퓨터 비전 컨퍼런스인 CVPR2024가 최우수 논문 및 기타 수상작을 공식 발표했습니다. 올해는 우수논문 2편, 최우수 학생논문 2편 등 총 10편의 논문이 수상하였습니다. 컴퓨터 비전(CV) 분야 최고 학회는 매년 수많은 연구기관과 대학이 모여드는 CVPR이다. 통계에 따르면 올해 총 1만1532편의 논문이 제출돼 2719편이 채택돼 합격률 23.6%를 기록했다. Georgia Institute of Technology의 CVPR2024 데이터 통계 분석에 따르면 연구 주제 관점에서 가장 많은 논문이 이미지 및 비디오 합성 및 생성입니다(Imageandvideosyn

우리는 LLM이 대규모 데이터를 사용하여 대규모 컴퓨터 클러스터에서 훈련된다는 것을 알고 있습니다. 이 사이트는 LLM 훈련 프로세스를 지원하고 개선하는 데 사용되는 다양한 방법과 기술을 소개합니다. 오늘 우리가 공유하고 싶은 것은 기본 기술에 대해 심층적으로 살펴보고 운영 체제 없이도 수많은 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 방법을 소개하는 기사입니다. 이 기사는 기계가 생각하는 방식을 이해하여 일반 지능을 달성하기 위해 노력하는 AI 스타트업 Imbue에서 가져온 것입니다. 물론 운영 체제가 없는 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 것은 탐색과 시행착오로 가득 찬 쉬운 과정이 아니지만 Imbue는 마침내 700억 개의 매개변수를 사용하여 LLM을 성공적으로 교육했습니다. 과정이 쌓이다

Machine Power Report 편집자: Yang Wen 대형 모델과 AIGC로 대표되는 인공지능의 물결은 우리가 살고 일하는 방식을 조용히 변화시키고 있지만 대부분의 사람들은 여전히 그것을 어떻게 사용하는지 모릅니다. 이에 직관적이고 흥미롭고 간결한 인공지능 활용 사례를 통해 AI 활용 방법을 자세히 소개하고 모두의 사고를 자극하고자 'AI in Use' 칼럼을 론칭하게 됐다. 또한 독자들이 혁신적인 실제 사용 사례를 제출하는 것을 환영합니다. 영상 링크 : https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ 최근 샤오홍슈에서는 혼자 사는 소녀의 인생 브이로그가 인기를 끌었습니다. 몇 가지 치유의 말과 함께 일러스트레이션 스타일의 애니메이션을 단 며칠 만에 쉽게 익힐 수 있습니다.

검색 증강 생성(RAG)은 검색을 사용하여 언어 모델을 향상시키는 기술입니다. 특히, 언어 모델은 답변을 생성하기 전에 광범위한 문서 데이터베이스에서 관련 정보를 검색한 다음 이 정보를 사용하여 생성 프로세스를 안내합니다. 이 기술은 콘텐츠의 정확성과 관련성을 크게 향상시키고 환각 문제를 효과적으로 완화하며 지식 업데이트 속도를 높이고 콘텐츠 생성 추적성을 향상시킬 수 있습니다. RAG는 의심할 여지 없이 인공 지능 연구에서 가장 흥미로운 분야 중 하나입니다. RAG에 대한 자세한 내용은 본 사이트의 칼럼 기사 "대형 모델의 단점을 보완하는 데 특화된 RAG의 새로운 발전은 무엇인가?"를 참조하시기 바랍니다. 이 리뷰는 이를 명확하게 설명합니다." 그러나 RAG는 완벽하지 않으며 사용자는 이를 사용할 때 몇 가지 "고통"에 직면하는 경우가 많습니다. 최근 NVIDIA의 고급 생성 AI 솔루션

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.
